JavaScript语言精粹_糟粕

全局变量

  JavaScript没有连接器(linker),所有的编译单元都载入一个公用的全局对象中。

  一共有3种方式定义全局变量。

  1. var foo = value;

  2. window.foo = value;

  3. foo = value;

  这本来是为方便初学者而有意让变量在使用前无需声明,但忘记声明变量是一个非常普遍的错误,而JavaScript的策略是让那些忘记预先声明的变量成为全局变量,这导致查找bug非常困难。

作用域

  JavaScript的语法来源于C,在大多数语言中,一般来说声明变量的最好的地方是在第一次用到它的地方。但JavaScript中没有块级作用域,所以更好的方式是在每个函数的开头部分声明所有变量。

自动插入分号

  JavaScript有一个机制,它通过自动插入分号来修正有缺陷的程序,千万不要依靠它,它可能会掩盖更为严重的错误

  比如:

return
{
     status:true   
};

  

return{
     status:true   
};

  返回的是两种不同的结果,第一个:自动分号让它变成了undefined。第二个返回一个包含status成员元素的对象。

保留字

  许多单纯被JavaScript保留,它们不能被用来命名变量或参数,当保留字被用作字面量的键值时,他们必须被引号括起来,它们不能被用在点表示法中,所以又是必须使用括号表示法。

Unicode 

  当设计JavaScript的时候,Unicode预计最多会有65536个字符,而从那以后它的容量慢慢增长到了拥有1百万个字符。

typeof

  typeof运算符返回一个用于识别运算数类型的字符串。但是它无法区分数组和对象。

parseInt

  它是一个将字符串转换为整数的函数,它在遇到非数字是会停止解析,所以parseInt("16")与parseInt("16 tons")产生相同的结果。

浮点数

  二进制的浮点书不能正确地处理十进制的小数,因此0.1+0.2不等于0.3.这是JavaScript中最经常被报告的bug,而且它是遵循二进制浮点数算数标准(IEEE 754)而有意导致的结果。

  但浮点数中的整数运算是精确的,所以小数表现出来的错误可以通过制定精度来避免。

NaN 

  它是IEEE 754中定义的一个特殊的数量值,它表示不是一个数字,尽管typeof NaN === ‘number’ //true.

  该值可能会在试图将非数字形式的字符串转换为数字是产生。

伪数组

  JavaScript中没有真正的数组,在JavaScript的数组中,不必给他们设置纬度,而且它们永远不会产生越界错误。

假值

  0、NaN、‘’(空字符串)、false、null、undefined

hasOwnProperty

  hasOwnProperty是一个方法,而不是一个运算符,所以在任何对象中,它可能会被一个不同的函数甚至一个非函数的值所替换。

对象

  JavaScript的对象中没有真的空对象,他们可以从原型链中取得成员元素。

原文地址:https://www.cnblogs.com/tyjz/p/7224921.html