js基础细节

js细节

1.所有的全局变量都是window的属性.
语句 var a=1;
等价于 window.a=1;
用 "变量名称" in window 来验证全局变量是否声明.


2.所有的变量声明都在范围作用域的顶部.

alert("a" in window);
var a;

尽管a的声明在 alert 之后,alert弹出的依然是true;
这是因为javascript引擎首先会扫描所有的全局变量声明,
然后将这些变量声明移动到顶部,最终的代码效果是这样的:
var a;
alert("a" in window);

3.函数声明 和 变量声明 在进入执行上下文就完成了.

变量声明:
var a;

函数声明:
function functionName(arg1,arg2){
    //函数体
}

变量赋值:
var a;--变量声明
a=1;--变量赋值

函数表达式:(匿名函数赋值给变量)======>函数表达式 相当于 变量赋值
var functionName=function(arg1,arg2){
    //函数体
}
拆解:
var functionName;
functionName=function(arg1,arg2){
    //函数体
}


优先级:函数声明 会覆盖 变量声明,但不会覆盖 变量赋值


4.this 变量:永远指向函数运行时所在的对象,
而不是函数被创建时所在的对象。
如果处在匿名函数中、或者不处于任何对象中,
this 都指向宿主的根对象(在浏览器里面就是 window)

javascript中还用 call() 和 apply() 来调用函数,
再记住下面这两句话:
如果是call()、apply()、with(),指定的this是谁,就是谁 !
普通的函数调用,函数被谁调用,this就是谁。

 

posted @ 2014-01-26 16:57  ``炯``  阅读(285)  评论(0编辑  收藏  举报