JS函数
2017-04-05 本文已影响7人
饥人谷_hak
语法
function 函数名([参数1,参数2]){
[语句1,
语句2]
return 返回值
}
函数有变量提升
函数方法call
fun.call(第一个参数[,参数1,参数2,参数3..])
- 函数fun使用call的 第一个参数 就是指向this
- 如果执行一个函数 ft(1) 它就相当于是 ft.call(undefined,1)
- this 和 参数 都是在调用一个函数时出现 , 不调用就没有
函数var作用域
var a
function f1(){
var a = 1
function f2(){
a = 1
}
function f4(){
var a
}
f2.call()
f3.call()
}
function f3(){
a = 2
}
f1.call()
这个 a = 1 是 f1 的var a , 如果 f1 没有声明 a ,就看 顶级作用域 有没有声明 , 没有的话 就是Global .
立即执行函数
(function(){
/*code*/
}());
//or
(function(){
/*code*/
})();
上面的两种写法都要加分号 不推荐用括号写法写法 , 因为可能和上一行合到一块
!function(){
}()
generator 函数
function*(){} //这就叫generator函数
语法yield「产出」
function* inner() {
yield 'hello!';
}
function* outer1() {
yield 'open';
yield inner();
yield 'close';
}
var gen = outer1()
gen.next().value // "open"
gen.next().value // 返回一个遍历器对象
gen.next().value // "close"
function* outer2() {
yield 'open'
yield* inner()
yield 'close'
}
var gen = outer2()
gen.next().value // "open"
gen.next().value // "hello!"
gen.next().value // "close"
函数节流
这点参考JavaScript,