說一下變數提公升的理解範圍:一段說明this幾種不同的使用場景
建立10個
標籤,點選的時候彈出來對應的序號
如何理解作用域
實際開發中閉包的應用
或者乙個函式
注意:函式宣告和函式表示式的區別
函式宣告
fn()
;// 不會報錯,因為函式宣告會提公升
functionfn(
)
函式表示式
fn1()
;// 會報錯,fn1會被當做變數定義,會提公升相當於var fn1 = undefined,在執行fn1();
// 以下均為函式表示式,函式表示式本質上即為變數定義
var a =
100;
varfn1
=function()
假如下列**在乙個
中,在乙個
中要定義乙個全域性的執行上下文,在執行第1行**之前,會把所有的變數宣告和函式宣告都執行一遍,執行順序如下:
console.
log(a)
;// undefined
var a =
100;fn(
'zhangsan');
// 'zhangsan', 20
function
fn(name)
// 全域性
// var a = undefined;
console.
log(a)
;var a =
100;fn(
'zhangsan');
function
fn(name)
}
this要在執行時才能確定值,定義時無法確認
var a =
}// 只看到這裡不能確認this到底是什麼
a.fn()
;// this === a
a.fn.
call()
;// this ===
var fn1 = a.fn;
fn1();
// this === window
function
foo(name)
;this
.name = name;
// return this;
}var f =
newfoo
('zhangsan'
);
var obj =
}obj.
printname()
;
functionfn(
)fn()
;
function
fn1(name, age)
// call表示為this,'zhangsan'為第1個引數,20為第2個引數,最常用
fn1.
call(,
'zhangsan',20
);fn1.(,
'zhangsan',20
);// 使用bind修改預設this,.bind必須是函式表示式
varfn2
=function
(name, age)
.bind()
fn2(
'zhangsan',20
)
// 沒有塊級作用域if(
true
)console.
log(name)
;// 'zhangsan'
// 但有函式和全域性作用域
var a =
100;
functionfn(
)console.
log(
'global'
, a)
;// 全域性 a = 100fn(
);// 函式 a = 200
var a =
100functionfn(
)fn()
;
var a =
100;
functionf1(
)f2()
;}f1(
);
函式作為返回值
functionf1(
)}var f1 =f1(
);// a是全域性變數,不會影響到函式中定義的區域性變數
var a =
200;
// 不是看此處執行時的作用域,而是回到其定義處的作用域f1(
);// 100
函式作為引數傳遞
functionf1(
)}var f1 =f1(
);function
f2(fn)
f2(f1)
;
在函式外面,根本不可能修改掉函式中定義的變數的值,以保證資料的安全不被汙染
說一下變數提公升的理解
說明this幾種不同的使用場景
建立10個
標籤,點選的時候彈出來對應的序號
錯誤寫法
var i, a
for(i =
0; i <
10; i++))
document.body.
(a);
}
正確寫法
var i;
for(i =
0; i <
10; i++))
document.body.
(a);})
(i)}
如何理解作用域
實際開發中閉包的應用
function
isfirstload()
else}}
var firstload =
isfirstload()
;firstload(10
);// true
firstload(10
);// false
firstload(20
);// true
firstload(20
);// false
js第四章作用域
一 動態的屬性 建立了乙個變數並且儲存在了變數person中 var person new object 為該物件新增了乙個名為name的屬性,將字串值 nicholas 賦值給name這個屬性 person.name nicholas alert person.name nicholas 只能給引...
第四章 變數,作用域和記憶體問題
檢驗型別 typeof 操作符 是確定乙個變數時字串,數值,布林值,還是undefined的最佳工具。如果變數的值是乙個物件或者null,那麼操作符都只會返回object,不能準確的區分。instanceof操作符。語法 result variable instanceof constructor ...
groovy學習歷程(第四章 閉包)
閉包 閉包是一段匿名函式,由lambda表示式派生。傳統方式求解 package groovy 求1到某個特定的數n之間所有偶數的和 def sum n total println sum of even numbers from 1 to 10 is 求1到某個特定的數n之間所有偶數的積 def ...