保留字:enu export extends final finally goto implements import in interface native package private protected public super synchronized throw throws transient typeof volatile void等
JavaScript语言中,本该被保留而没有保留的字:undefined、NaN和Infinity
标识符:JavaScript不允许使用保留字来命名变量或参数 不允许在对象字面量中、或在一个属性存取表达式的点号之后,使用保留字作为对象的属性名。
数字:NaN是一个数值,它表示一个不能产生正常结果的运算结果,不等于任何值,包括自己。
字母串:”serven”.length 是5 “A”===“"u0041” 没有字符,只有字符串,字符串不可变,一旦创建就无法改变它,只能通过+运算符连接其他字符串。‘c’+’a’+’t’===’cat’等于true。
代码块:是包在一对花括号的一组语句。JavasScript中的代码块不会创建一个新的作用域,因此变量应该被定义在函数的顶端,而不是在代码块中。
If:这些值被当作假(falsy) false null undefined 空字符串’’ 数字0;其他所有的值都被当作真,包括true、字符串”false”,以及所有的对象。
case:case从句包含一个或多个case表达式。case表达式不一定必须是常量。
return: 如果没有指定返回表达式,那么其返回值是undefined.不允许在return关键字和表达式之间换行。
Break:break语句会使程序退出一个循环语句或switch语句。它可以指定一个可选的标签,那将使程序退出带该标签的语句。同样的不允许在break关键字和标签之间换行。
&&:如果第一个运算数等于true,则决定权在第二个运算数。
尝试检索一个undefined值将会导致TypeError异常,可以值通过&&来避免错误:
flight.equipment; flight.equipment.model //throw TypeError
fight.equipment && flight.equipment.model //
||:如果第一个运算数等于false,则决定权在第二个运算数。
可以用来填充默认值,如:
var middle = stooge[“middle-name”] || ”none”;
var status = flight.status || “unknown”;
Invocation expression:函数调用运算符是跟随在函数名后面的一对圆括号。
Refinement expression:一个属性存取表达式用于指定一个对象或数组的属性或元素。
object literal : { [name:expression] , [string:expression] }
regexp literal:
JavaScript的简单类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象。数字、字符串和布尔值“貌似”对象,因为它们拥有方法,但它们是不可变的。JavaScript中的对象是可变的键控集合(keyed collections)。在JavaScript中,数组是对象,正则表达式是对象,当然,对象自然也是对象。
对象是属性的容器,其中每个属性都拥有名字和值。属性的名字可以包括空字符串在内的任意字符串。属性值可以是除undefined值之外的任何值。
Object literals:对象字面量:包围在一对花括号中的零个或多个“名/值”对,对象字面量可以出现在任何表达式出现的地方。如果属性名是合法标识符,并不强制要求用引号括住属性名。所以”first-name”是必须的,”first_name”则是可选的。
更新:对象值可以通过赋值语句更新,如果对象之前并没有拥有这个属性名,那么该属性就被扩充到该对象中。
引用:对象通过引用来传递,它们永远不会被拷贝。
var a =b=c{};//a、b、c都引用同一空对象
var a={}, b={}, c={};//a、b、c引用不同的空对象
原型:??
枚举:for in 过程将会列出所有的属性——包括函数和你可能不关心的原型中的属性。所以可以用下面两种方式过滤掉那些你不想要的值: