A-A+

《javascript语言精粹》摘要

2016年07月11日 默认文章 暂无评论

 

js中的函数是根据词法来划分作用域的

没有用的注释比没有注释更糟糕。

块级注释对于被注释 的代码来说是不安全的,用//代替/* */.

js不允许使用保留字来命名变量或参数。更不允许在对象字面量中,或者用点运算符提取对象属性时,使用保留字作为对象的属性名。

js只有一个数字类型,没有分离出整数型,1和1.0的值是相同的。

NaN是一个数值,表示一个不能产生正常结果的运算结果。不等于任何值,包括自身。用isNaN(number)检测。

math.floor(number)方法把一个数字转为整数。

js中所有字符都是16位的。js没有字符类型。

\U用来指定数字字符编码。

字符串有一个length属性.一旦被创建,无法更改,

js中的代码块不会创建新的作用域,因此变量应该被定义在函数的头部,而非代码中。

这些值被当做假:false,null,undefined,空字符串‘’,数字0,数字NaN。其他所有值为真,包括字符串‘false’.

case表达式不一定必须是常量。

for in 语句会枚举一个对象的所有属性名(或键名)。在每次循环中,object的下一个属性名字符串被赋值给variable,

通常需要检测object.hasOwnProperty(variable)来确定这个属性名是该对象的成员,还是来自于原型链。

for(myvar in obj){

if(  obj.hasOwnProperty(myvar) ){

}

}

try语句执行一个代码块,并捕获该代码块抛出的任何异常,catch从句定义一个新的变量variable来接收抛出的异常对象。

throw语句抛出一个异常,如果throw语句在一个try代码块中,那么控制流会跳转到catch语句当中,如果其在函数中,则该 函数调用被放弃,控制流跳转到调用该函数的try语句的catch从句中。

js不允许在return关键字和表达式之间换行。,以及break关键字和标签之间换行。

一个expression语句可以给一个或多个变量或成员赋值,或者调用一个方法,或者从对象中删除一个属性。

在js中,%并不是通常数学意义上的模运算,而是‘求余’运算。

js的标识符中包含连接符是不合法的,允许包含下划线。

||运算符可用来填充默认值.

对象里的值可以通过赋值语句来更新,如果属性名已经存在于对象里,那么这个属性的值就会被替换。如果对象之前没有拥有那个属性名,那该属性就会被扩充到对象中。对象通过引用来传递,他们永远不会被复制。

 

每个对象都连接到一个原型对象,并且它可以从中继承属性,所有通过字面量创建的对象都连接到Object.prototype,他是js的标配对象。

原型连接在更新时是不起作用 的。当我们对某个对象作出改变时,不会触及该对象的原型。原型连接只有在检索值的时候才被用到。

委托;

原型关系是一种动态的关系,如果添加一个新的属性到原型中,该属性会立即对所有基于该原型创建的对象可见。原型链中的任何属性都会产生值。hasOwnProperty方法不会检查原型链。

delete运算符可以用来删除对象的属性,如果对象包含该属性,那么该属性就会被移除,它不会触及原型链中的任何对象。删除对象的属性可能会让来自原型链中的属性透现出来。

最小化使用全局变量的方法之一为:为你的应用只创建一个唯一的全局变量。

js中中共有4种调用模式,方法调用、函数调用、构造器调用、apply调用、