属性访问表达式
属性的访问有两种方式 expression.identifier
expression["identifier"]
使用==的时候,可能会伴随这对象类型的转换。但是===不会进行对象类型的转换,他是周线计算其操作数的值,然后比较这两个值。
但是NaN和其他的人任何值都不相等。包括他自己。因此通常使用x!==x,来判断x是否
===是严格的相等
in运算符
in的左操作数是一个字符串或是可以转化成字符串。右操作数是一个对象,如果右侧的对象拥有一个名为做操作数的属性名,那么表达式返回true. 就是判断某个属性是否属于某个对象。
var point={x:1,y:2}; //这里面是键值对的形式 ,表示的是对象
"x" in point //true
"toString" in point //true 对象继承了toString()方法。
eval() 是一个函数,但是相当于一个运算符。
但是在上面的数组上,a.length 仍然为3 因为尽管幽静删除了这个元素,但是删除操作中留下了一个洞 实际上并没有修改数组的长度。
通过delete不能直接删除var声明的变量
虽然在方法中声明变量会被“提前”,但是在不同的方法中进行多次的声明同一个变量是无所谓的。
debugger语句 这个只是个调试的工具
function f(0){
if(o===undefined){
debugger; //这一行代码只是用来临时调试
}
}
use strict 是一条指令,接近于语句,但是不是语句。
他和语句的区别:指令只是一个特殊字符串的直接量表达式