1,任何一个 JavaScript的标识、常量、变量和参数都只是unfined, null, bool, number, string, object和function类型中的一种,也就typeof返回值表明的类型。除此之外没有其他类型了
2,NaN参与任何数值计算的结构都是NaN,而且NaN != NaN。Infinity / Infinity = NaN ,NaN(not a number)不是数字,infinity正无穷大
3,函数和全局变量先加载,才会按顺序执行其他语句代码
4,Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用
caller
返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
说明
对于函数来说,caller 属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么 结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本
callee
返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
可选项 function 参数是当前正在执行的 Function 对象的名称。
说明
callee 属性的初始值就是正被执行的 Function 对象。
callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名
函数的递归或者保证函数的封装性
apply and call
它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别:
apply(thisArg,argArray);
call(thisArg[,arg1,arg2…] ]);
即所有函数内部的this指针都会被赋值为thisArg,这可实现将函数作为另外一个对象的方法运行的目的
Person.prototype.SayHello 原型中的方法不能被修改,可以重写
=====================================================
LHS引用用来赋值运算,RHS引用用来获取值。
作用域逐层向上查找