課堂筆記
- 函數(shù)的聲明方法
1.function f(){}
2.var f = function(){}
3.var x = function y(){}
//當(dāng)函數(shù)y被賦值給變量x之后,y這個(gè)變量的作用域就只存在與函數(shù)內(nèi)部,在函數(shù)外部y不再可以被訪問
4. 箭頭函數(shù): (x,y)=>{return x+y}
5.var f = new Function('x','y','return x+y')
需要注意的是,箭頭函數(shù)內(nèi)部的this沒有特殊含義,就像一個(gè)一般變量一樣,如下面代碼
var a = {
b:{
c:()=>{console.log(this)},
d:function(){console.log(this)}
}
}
a.b.c()//Window
a.b.d()//b
- name屬性
var x = function y(){}
x.name === 'y' //true
var f = new Function('x','y','return x+y')
f.name // 'anonymous'
- 函數(shù)在內(nèi)存中實(shí)際的內(nèi)容以字符串的形式存在(見紙質(zhì)筆記)
- 答案為 undefined
函數(shù)有自己的作用域。它的作用域與變量一樣,就是其聲明時(shí)所在的作用域,與其運(yùn)行時(shí)所在的作用域無關(guān)。
- image.png
for(let i=0;i<li.length;i++){
li.onclick = function(){console.log(i)}
}
當(dāng)<li>被點(diǎn)擊時(shí),打印出的值為6。代碼執(zhí)行for循環(huán)為每個(gè)<li>綁定函數(shù),函數(shù)執(zhí)行的時(shí)候for 循環(huán)已經(jīng)結(jié)束。

image.png
- 普通模式下,給call()傳入的第一個(gè)參數(shù),會被封裝成對象
function f(){console.log(this)}
f.call(1) // Number{1}
f.call('s') //String {"s"}
f.call(true) //Boolean {true}
-
易錯(cuò)習(xí)題
image.png

image.png

image.png


