js空数组是true or false
来源:互联网 发布:淘宝联盟的导购名称 编辑:程序博客网 时间:2024/06/10 13:16
var arr = new Array();// 或 var arr = [];
初始化后,即使数组arr中没有元素,也是一个object。
typeof arr;// "object"
既然是object,用于判断条件时就会被转化为true
if(arr)console.log("it's true");// it's true这里写代码片
但是,如果将arr与布尔值比较:
arr == false;// truearr == true;// false这里写代码片
可是,如果把arr转化为Boolean,的确是true:
Boolean(arr);// true
那arr与布尔值比较时,到底发生了什么?
原来,任意值与布尔值比较,都会将两边的值转化为Number。
如arr与false比较,false转化为0,而arr为空数组,也转化为0:
Number(false)// 0Number(arr)// 0
所以,当空数组作为判断条件时,相当于true。当空数组与布尔值直接比较时,相当于false。
也就出现了以下令人绕圈的现象:
[] == ![];// true
因为![]为false,[]与![]比较相当于[]与false进行比较
如何避免数组与布尔值比较时出现的坑呢?可以先把数组转化为布尔值:
Boolean(arr) == true;// true
new Array() == [];//false
就和new Array() == new Array()一样。是不同的两个对象。
new Array(1) == false;// true,虽然数组的长度为1,但还是一个空数组Number[new Array()]为0[undefined] == false;// true,虽然[undefined].length为1,Number([undefined])为0;
0 0
- js空数组是true or false
- js 空数组是true还是false
- js 空数组是true还是false
- js 空数组是true还是false
- js中 [] ? true : false 的返回值为什么是true?
- true or false
- JS true和false
- inverse=false or true
- inverse=true or false
- js中‘0’到底是 true 还是 false
- js中‘0’到底是 true 还是 false
- js的True、False判断
- python 类中的__nozero__ ,__len__ 重写,可以定义对象的布尔值是True or False
- js中的undefined,null,空字符串,false,true之间的关系
- AlertDialog中button设置false or true
- registerWithTouchDispatcher & ccTouchBegan 备忘 true or false
- Python小技巧 – True or False
- 0是FALSE 1是TRUE
- smartupload实现 jsp页面上传文件 将文件以二进制形式保存在数据库
- 电子邮件浅理解
- Win32编程 创建窗口第二步 创建窗口类
- Linux 环境变量PATH
- 排序算法类的模板
- js空数组是true or false
- 【转载】[Poj 2187]计算几何之凸包(三) {旋转卡壳初步}
- 深度学习 deep learning 深度学习框架 caffe 深入学习过程(一)
- Eclipse快捷键积累
- SetWindowText函数(详解)
- [安卓基础]学习第六天
- node.js爬虫 保存数据为json、mysql、mongodb 虎牙、斗鱼、熊猫、全民、龙珠 在线直播间抓取
- 错误 Angular2 Can't bind to 'routerLink' since it isn't a known property of 'a'
- 腾讯安全反病毒实验室解读“Wannacry”勒索软件