课堂笔记
- 函数的声明方法
1.function f(){}
2.var f = function(){}
3.var x = function y(){}
//当函数y被赋值给变量x之后,y这个变量的作用域就只存在与函数内部,在函数外部y不再可以被访问
4. 箭头函数: (x,y)=>{return x+y}
5.var f = new Function('x','y','return x+y')
需要注意的是,箭头函数内部的this没有特殊含义,就像一个一般变量一样,如下面代码
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'
- 函数在内存中实际的内容以字符串的形式存在(见纸质笔记)
- 答案为 undefined
函数有自己的作用域。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在的作用域无关。
- image.png
for(let i=0;i<li.length;i++){
li.onclick = function(){console.log(i)}
}
当<li>被点击时,打印出的值为6。代码执行for循环为每个<li>绑定函数,函数执行的时候for 循环已经结束。
image.png- 普通模式下,给call()传入的第一个参数,会被封装成对象
function f(){console.log(this)}
f.call(1) // Number{1}
f.call('s') //String {"s"}
f.call(true) //Boolean {true}
-
易错习题
image.png
网友评论