Javascipt笔记之--数组

有些开发者习惯将常量写在运算符的左边,这样的话,一旦不小心将相等运算符写成赋值运算符,就会报错,因为常量不能被赋值。
if (x = 2) { // 不报错 if (2 = x) { // 报错

需要注意的是,switch语句后面的表达式与case语句后面的表示式,在比较运行结果时采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。
var x = 1; switch (x) { case true: console.log('x发生类型转换'); default: console.log('x没有发生类型转换');} // x没有发生类型转换

注意,JavaScript的标识名区分大小写,所以undefinednull不同于UndefinedNull
(或者其他仅仅大小写不同的词形),后者只是普通的变量名。

如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。

undefined null false 0 NaN ""或''(空字符串)

布尔值往往用于程序流程的控制,请看一个例子。

if ('') { console.log(true);} // 没有任何输出

上面代码的if命令后面的判断条件,预期应该是一个布尔值,所以JavaScript自动将空字符串,转为布尔值false,导致程序不会进入代码块,所以没有任何输出。需要特别注意的是,空数组([])和空对象({})对应的布尔值,都是true。
if ([]) { console.log(true);} // true if ({}) { console.log(true);} // true

将数组清空的一个有效方法,就是将length属性设为0。

需要注意的是,for...in会遍历数组所有的键,即使是非数字键。
var a = [1, 2, 3]; a.foo = true; for (var key in a) { console.log(key);} // 0 // 1 // 2 // foo

上面代码在遍历数组时,也遍历到了非整数键foo。所以,使用for...in遍历数组的时候,一定要小心。

delete命令不影响length属性。
var a = [1, 2, 3]; delete a[1];delete a[2]; a.length // 3
上面代码用delete命令删除了两个键,对length属性没有影响。也就是说,length属性不过滤空位。所以,使用length属性进行数组遍历,一定要非常小心。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 标签: 我的笔记 ---学习资料:http://javascript.ruanyifeng.com/ 1. 导论 ...
    暗夜的怒吼阅读 852评论 0 1
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,534评论 5 28
  • 2016.05.17 本篇回忆一下放学后看书的经历。 记得上小学时,放学后,有时要等妈妈下班一起回家,这段时间通常...
    摹喵居士阅读 397评论 0 0
  • 前言:谋略目的所追求的效果就是以最小的代价赢得最大的胜利。 作为一个企业的管理者,难免自己处于不利地位的时候,那在...
    百家和鸣阅读 158评论 0 0