js中的==运算: [''] == false —>true

图1

计算下面表达式的值:

[‘‘] == false

首先,两个操作数分别是对象类型、布尔类型。根据图1,需要将布尔类型转为数字类型,而false转为数字的结果是0,所以表达式变为:

[‘‘] == 0

两个操作数变成了对象类型、数字类型。根据图1,需要将对象类型转为原始类型:

  • 首先调用[].valueOf(),由于数组的valueOf()方法返回自身,所以结果不是原始类型,继续调用[].toString()。
  • 对于数组来说,toString()方法的算法,是将每个元素都转为字符串类型,然后用逗号‘,‘依次连接起来,所以最终结果是空字符串‘‘,它是一个原始类型的值。

此时,表达式变为:

‘‘ == 0

两个操作数变成了字符串类型、数字类型。根据图1,需要将字符串类型转为数字类型,前面说了空字符串变成数字是0。于是表达式变为:

0 == 0

到此为止,两个操作数的类型终于相同了,结果明显是true。

不造你看没看懂,反正我是看懂了,哈哈

想了解更多关于==的运算点击下面大神的链接吧~

作者:苏云
链接:https://zhuanlan.zhihu.com/p/21650547
来源:知乎

js中的==运算: [''] == false —>true

时间: 2024-08-20 11:28:05

js中的==运算: [''] == false —>true的相关文章

js中return、return true、return false的区别

js中return.return true.return false;区别 一.返回控制与函数结果, 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  二.返回控制, 无函数结果,语法为:return;  在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.    Return False 就相当于终止符,Return True 就相当于执行符.    

js中return;、return true、return false;区别

一.返回控制与函数结果 语法为:return 表达式 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制 无函数结果,语法为:return; 在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页面. return false; 就相当于终止符, return true;  就想当于执行符. 在js中,return false的作用一般是用来取消默认动作的.比如你单击一个链接除了

js中位运算的运用

原文:js中位运算的运用 我们可能很少在编程中用位运算,如果没深入学习,可能也很难理解.平时的数值运算,其实是要先转换成二进制再进行运算的,而位运算就是直接进行二进制运算,所以位运算的执行效率肯定是更高的.下面通过一些实例来加深对位运算的理解. 按位与(&) &&运算符我们都知道,只有两个都为真,结果才为真.&道理是一样的,只有两个数的值为1时,才返回1.例如1和3的按位与操作: 0001 & 0011 --------- 0001 只有对应的数为1时,结果才为1,

JS中delete运算

var a={x:1,y:2,z:3}; var b=[1,2,3]; delete a.x; delete b[0]; $("p").text(1 in b); alert(0 in b);// false角标为0的元素已经被删除了 alert("x" in a);// false x已经被删除 console.log(typeof(a.x));//undefined console.log(typeof(a.y));//number alert(b.length

js中return;return true return false 的区别

return 定义: return 语句会 终止函数的执行 并 返回函数的值. 注意这两个: 1.终止函数的执行 2.返回函数的值 返回函数的值这里就不过多叙述了,就是 return 变量 先看下面的例子: <!DOCTYPE html> <html> <head> <title>return测试</title> </head> <body> <a href="#"></a> &

js中浮点型运算(转)

js中浮点型是如何运算的呢? 例如:var a=0.69; 我想得到6.9 直接这样写 var c=a*10; alert(c);   得到结果是:6.8999999999999995 到网上一搜,有网友说这是一个JS浮点数运算Bug,找了解决方法: 方法一:有js自定义函数 <script> //加法函数,用来得到精确的加法结果 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. //调用:accAdd(arg1,arg2)

Ajax请求中的async:false/true的作用[转]

test.html <a href="javascript:void(0)" onmouseover="testAsync()"> asy.js function testAsync(){    var temp;    $.ajax({        async: false,        type : "GET",        url : 'tet.php',        complete: function(msg){  

js中的运算

1.alert(3+4+"hello"+5+6)    //7hello56        从左往右相加时,遇到第一个非数值型,就理解为字符串拼接 2.var a = 6; var b = true; var c = a||b     //6 var d = false; var e = 5; var f =d&&e;  //false 逻辑运算的值是能够确定运算结果的单元的值

Ajax请求中的async:false/true的作用

最近做东西用到ajax,我在火狐下firebug打断点一点问题都没有,可是关了firebug,程序不进后台方法,纳闷了好久,从来没有遇到过这种情况,最后加了一个参数async:false好了,还是很纳闷,以前写了那么多ajax相关代码从来没遇到过这种情况,原来对asy:nc:false的含义不大了解,还有可能和现在这个平台有关系吧.async boolean default: trueby default, all requests are sentasynchronous (e.g. this