JSの関数
1730 ワード
1.関数の5つの声明具名関数 匿名関数 具名関数割り当て window.Function(大域関数) 矢印関数
3.thisとargments
最初のパラメータはthisで、後ろのパラメータは擬似配列argmentsを構成します. strictモード 普通モード
変数のスコープを決定:は、まず自分の一番近い作用域において声明を探す(近くの原則) .父の範囲で声明を探しています. もないです.グローバル変数 です.
面接問題:
コードを持って直接作ると、必ず間違えます.先に声明を上げてください
関数がその範囲外の変数を使用している場合、この関数にこの変数を加えると、クローズドと呼ばれます.
function f(x,y){
return x+y
}
f.name // 'f'
var f
f = function(x,y){
return x+y
}
f.name // 'f'
var f
f = function f2(x,y){ return x+y }
f.name // 'f2'
console.log(f2) // undefined
var f = new Function('x','y','return x+y')
f.name // "anonymous"
var f = (x,y) => {
return x+y
}
var sum = (x,y) => x+y
var n2 = n => n*n
2.関数f.calの呼び出し方法f.call(asThis, input1,input2)
のうち、asThisはthisとされ、[input 1,input 2]はargments禁止f(input 1,input 2)とされ、学会.callによってthisが理解されます.3.thisとargments
最初のパラメータはthisで、後ろのパラメータは擬似配列argmentsを構成します.
function f(){
'use strict'
console.log(this)
}
f.call() // this , undefined
function f(){
console.log(this)
}
f.call()// this , window
4.スコープ変数のスコープを決定:
面接問題:
コードを持って直接作ると、必ず間違えます.先に声明を上げてください
var a = 1
function f1(){
alert(a) //
var a = 2
}
f1.call()// undefined
var a = 1
function f1(){
var a = 2
f2.call()
}
function f2(){
console.log(a) //
}
f1.call()// 1
var liTags = document.querySelectorAll('li')
for(var i = 0; i
5.クローズド関数がその範囲外の変数を使用している場合、この関数にこの変数を加えると、クローズドと呼ばれます.