js里面某某=true 是什么意思?

JavaScript014

js里面某某=true 是什么意思?,第1张

js里面某某=true,就等于给某变量赋值,true就是让这个变量为真。因为在js中很多地方会用到条件判断。比如用户名输入:检测用户输入内容,如果不为空,那么就是变量flag赋值true,为空就赋值false。然后根据flag的值进行不同操作,其实就是根据用户输入内容是不是为空来操作。

string当作布尔型作比较时,除空字符串是false,其余都是true;

从上面我们可以得出,0是false,‘0’是true;

那为什么会出现‘0’ == 0 >>>>true

string和数字类型作比较,会把string转为数字

这四点记下来

js数字型和布尔型比,会把布尔型转化数字型

js规定所有的正负整数都是true,只有0是false;

string当作布尔型作比较时,除空字符串是false,其余都是true;

string和数字类型作比较,会把string转为数字

关于在js中判断 str.search("string") ,str.indexOf("string"),用到这两个方法的时候加上对数字 -1 的判断。

错误的写法,if(str.search("string") ) if(str.indexOf("string"))

通过上面的转换规则, ![] 的类型为布尔值 typeof ![] === 'boolean' , 那么会变成 false , 根据第一步, false =>0 ,所以右侧为 0 ,接下来因为右侧是 0 ,按照第二步的规则,右侧为0满足的条件,左侧的 [] ,被转化为 Number([]) =>0 , 两边都为0,则返回为 true

此时的情况满足上转换规则的第三步,在双等号左右两边的类型相等时,采用三等号进行判定

此时的==号两边的地址是不一样的,所以返回为false

有了上面两个经验,不难看出, !{}为布尔类,将转换为0, 因为右边为转换成数值类,所以左边Number({}) =>NaN, NaN连自己都不相等,所以为false

以上三种规则都不满足,在javascript规范中找到了答案

Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。

undefined: Undefined类型,当一个声明了一个变量未初始化时,得到的就是undefined

实际上,undefined值是派生自null值的,ECMAScript标准规定对二者进行相等性测试要返回true,