对象没有call和apply方法,只有函数有;
apply可以将数组和类数组一次性的传递进函数中,call只能一个一个的传;
请判断代码的输出结果
7-2
因为return会立即结束函数,它后面的语句不会被执行,所以结果为3
请判断代码的输出结果
7-6
1、document.write期望接收和输出字符串,当接收的参数不为字符串时,会调用参数的toString方法,将其转化成字符串输出
2、 数组调用toString()后,会将其中的元素用逗号拼接起来变成字符串
3、 一般的对象调用toString()后返回[object Object]
重写对象的toString()方法,就按照重写方法的返回值输出;
所以结果为
1,2,3;
[object Object];
调用了toString方法
请判断代码的输出结果
7-8
1、 count()()这样调用,每次都会创建一个新的局部作用域,num的值会不断地被初始化为1【创建新的作用域就是每次count函数都重新执行一遍,num值被初始化为1 ,所以每次调用输出的值都是1】
2、 return num++表示先返回num的值,再将num加1
3、 先将count()赋给fn,此时count()只调用了一次,接下来多次调用fn()的时候,count函数并没有多次调用,num只会在count函数调用的时候被初始化,所以多次调用fn()的时候num不会被多次初始化【即fn=count()只执行了一次,也就是初始化了一次num值,后面调用fn是调用返回出来的函数】;
由于fn相当于count函数的内层函数(var fn=count();这行代码执行后,就调用了count(),调用count后就将里面的函数赋值给了fn,所以说fn就相当于函数的内层函数了。),可以访问count中的变量num,所以多次调用fn函数,会将num的值累加;【fn是一个全局变量,将返回出来的函数赋值给了它,并且这个函数中还用着num变量,所以num值不会被销毁,每调用一次fn,num值就会在原来基础上增加】
所以最终结果为1,1,1,1,2,3
网友评论