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就是谁。