【前端学习】JavaScript基础

数据类型篇

1. null是一个表示”空”的对象,转为数值时为0;undefined是一个表示“此处无定义”的原始值,转为数值时为NaN

2. JavaScript转换布尔值的规则是:除了undefined、null、false、0、NaN、空字符串转为false以外,其他值都视为true。空数组和空对象对应的布尔值都是true

3. JavaScript的Number精度最多只能到53个二进制位,它对15位的十进制数都可以精确处理

4. JavaScript能够表示的数值范围为21024到2-1023(开区间),超出这个范围的数无法表示

5. NaN不等于任何值,包括它本身。数组的indexOf方法内部使用的是严格相等运算符,所以该方法对NaN不成立

6. 判断NaN更可靠的方法是:利用NaN为唯一不等于自身的值的这个特点,进行判断

7. 对于码点在U+10000到U+10FFFF之间的字符,JavaScript总是认为它们是两个字符(length属性为2)。所以处理的时候,必须把这一点考虑在内。也就是说,JavaScript返回的字符串长度可能是不正确的

8. 为了避免歧义,JavaScript引擎在无法确定一行代码是对象还是代码块时,一律解释为代码块。如果要解释为对象,最好在大括号前加上圆括号

9. 只有一种情况,delete命令会返回false,那就是该属性存在,且不得删除。它只能删除对象本身的属性,无法删除继承的属性。即使delete返回true,该属性依然可能读取到值

10. with语句一个很大的弊病是绑定对象不明确,建议不要使用,可以考虑用一个临时变量代替with

11. 采用函数表达式声明函数时,function命令后面不带有函数名。如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效

12. 函数的作用域与变量一样,就是其声明时所在的作用域,与运行时所在的作用域无关

13. 函数的length属性与实际传入的参数个数无关,只反映函数预期传入的参数个数。但是,没有办法只省略靠前的参数,而保留靠后的参数。如果一定要省略靠前的参数,只有显式传入undefined

14. 函数参数如果是原始类型的值,传递方式是传值传递。但是,如果函数参数是复合类型的值,传递方式是传址传递

15. 如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这是将不会影响到原始值

16. 如果有同名的参数,则取最后出现的那个值

17. arguments对象只有在函数体内部才可以使用,且可以在运行时修改。通过arguments对象的length属性,可以判断函数调用时到底带几个参数

18. 立即调用的函数表达式:(function(){ /* code */ }());

19. 数组的数字键不需要连续,length属性的值总是比最大的那个整数键大1

20. 使用delete命令删除一个数组成员,会形成空位,并且不会影响length属性

21. 如果是空位,使用数组的forEach方法、for...in结构以及Object.keys方法进行遍历,空位都会被跳过。如果某个位置是undefined,遍历的时候就不会被跳过

猜你喜欢

转载自www.cnblogs.com/Akatsuki-Sanjou/p/12890382.html