這里是JavaScript開發(fā)者必須掌握的常識(shí):
- 所有全局變量都是window對(duì)象的屬性。
var a = 1
等效于:
window.a = 1
- var變量存在“變量提升”現(xiàn)象, let不會(huì)。
console.log(a); //undefine
var a = 1;
//let
console.log(a); // //拋出異常:Uncaught ReferenceError: a is not defined
let a = 1;
- var變量的聲明會(huì)被提升,但是初始化不會(huì)提升。
console.log(a); //undefine
var a = 1;
//等效于
var a;
console.log(a); //undefine
a = 1;
- 函數(shù)聲明也會(huì)提升。
- 函數(shù)聲明會(huì)覆蓋變量聲明,但是不會(huì)覆蓋變量初始化
alert(typeof value); //"function"
function value(){
return 1;
}
var value;
alert(typeof value); //"function"
alert(typeof value); //"function"
function value(){
return 1;
}
var value = 1;
alert(typeof value); //"number"
- 函數(shù)的arguments是對(duì)函數(shù)實(shí)參的引用,改變arguments會(huì)改變實(shí)參內(nèi)容。
function b(x, y, a) {
arguments[2] = 10;
alert(a); //10
}
b(1, 2, 3);
- 函數(shù)中的this參數(shù):對(duì)象中的方法,this就是函數(shù)所在的對(duì)象;全局函數(shù)的this是window。
var object = {
method: function() {
alert(this === object); //true
}
}
object.method();
//
function method() {
alert(this === window); //true
}
method();
- 函數(shù)調(diào)用call()方法,實(shí)現(xiàn)函數(shù)成為另一個(gè)對(duì)象的函數(shù),call()傳的第一個(gè)參數(shù)變成這個(gè)函數(shù)的this,同時(shí),后續(xù)參數(shù)作為傳給函數(shù)。
var obj = {};
function method(x) {
alert(this === obj);
console.log(x);
}
method(10); //false
method.call(obj, 10); //true
如果call()中沒有參數(shù),或者為null或者undefined,那么默認(rèn)為window。
....未完待續(xù)