首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在JavaScript var x=2,var y="2";console.log(x-y)中,为什么o/p是0?

在JavaScript中,变量的类型是动态的,也就是说变量可以在运行时根据赋值的内容自动确定其类型。在给变量赋值时,JavaScript会根据赋值的内容来确定变量的类型。

在给变量x赋值时,使用了数字2,因此变量x的类型被确定为数字类型。而在给变量y赋值时,使用了字符串"2",因此变量y的类型被确定为字符串类型。

当使用减法运算符(-)对x和y进行运算时,JavaScript会尝试将字符串y转换为数字类型进行计算。由于字符串"2"可以被解析为数字2,所以计算结果为2-2,即0。

因此,console.log(x-y)的输出结果是0。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript(四):运算符&数据类型转换

1 var a=1+2; 2 console.log('first: '+a); 3 var a=1+2+'3';//先计算1+2,然后与'3'字符串连接 4 console.log('second...(+'1');//1 12 console.log(+false);//0 13 console.log(+[]);//0 赋值运算符&复合运算符:注意符号连在一起的(例如 +=不能写为 + =,即中间没有空格...1 var x=1,y=2; 2 x=y;//赋值运算符,将y值赋值给x 3 x+=y;//即x=x+y; 4 x-=y;//x=x-y; 5 x*=y;//x=x*y; 6 x/=y;//x...位运算只对整数起作用:javascript内部,数值是以64位浮点数进行存储,但在位运算时,是以32位带符号的整数进行运算,返回值也是32位带符号的整数!...10.5^0);//取整效果 void运算符:执行一个表达式,不返回任何值;也可以说返回undefined image.png void运算符的一个主要作用是:超链接插入代码,返回undefined

67660
  • 37个JavaScript基本面试问题和解答(建议收藏)

    (y) { return x + y; }; }} JavaScript,函数提供对参数对象的访问,该对象提供对传递给函数的实际参数的访问。...该代码将输出以下四行: 0 || 1 = 11 || 2 = 10 && 1 = 01 && 2 = 2 JavaScript,都是||和&&逻辑运算符,当从左向右计算时返回第一个完全确定的“逻辑值...但是,如果此布尔值为“假”,我们仍然不知道X || Y真还是假,直到我们评估Y,并将其解释为布尔值。 因此,0 || 1评估为真(1),正如1 || 2。 和(&&)运算符。...X && Y形式的表达式,首先评估X并将其解释为布尔值。如果此布尔值为false,则返回false(0)并且不评估Y,因为“and”条件已失败。...console.log(false == '0')console.log(false === '0') 该代码将输出: truefalse JavaScript,有两套相等运算符。

    3K10

    前端必备,25个最基本的JavaScript面试问题及答案

    ) { return x + y; }; } } JavaScript,函数可以提供到 arguments 对象的访问,arguments 对象提供传递到函数的实际参数的访问。...该代码将输出: 0 || 1 = 1 1 || 2 = 1 0 && 1 = 0 1 && 2 = 2 JavaScript, || 和 &&都是逻辑运算符,用于在从左至右计算时,返回第一个可完全确定的...形如 X||Y的表达式,首先计算X 并将其解释执行为一个布尔值。如果这个布尔值true,那么返回true(1),不再计算 Y,因为“或”的条件已经满足。...形如 X&&Y的表达式,首先计算 X并将其解释执行为一个布尔值。如果这个布尔值为 false,那么返回 false(0),不再计算 Y,因为“与”的条件已经失败。...console.log(false == '0') console.log(false === '0') 代码将输出: true false JavaScript,有两种等式运算符。

    93230

    Js严格模式

    y = 1; // Uncaught ReferenceError: y is not defined 不允许delete变量和函数 // 非严格模式 var x = 1; delete x; console.log...y = 010; // Uncaught SyntaxError: Octal literals are not allowed in strict mode. var x = 0O10; // 可以使用...ES6的八进制表示法新写法 前缀0o0O console.log(x); // 8 不允许使用转义字符 // 非严格模式 var x = "\045"; console.log(x); // % /...这种自动转化为对象的过程不仅是一种性能上的损耗,同时浏览器暴露出全局对象也会成为安全隐患,因为全局对象提供了访问那些所谓安全的JavaScript环境必须限制的功能的途径。...{ console.log(this); // undefined } s(); 禁止访问调用栈 严格模式再也不能通过广泛实现的ECMAScript扩展游走于JavaScript的栈

    2.3K30
    领券