美文网首页
JS错题理解之函数

JS错题理解之函数

作者: Leophen | 来源:发表于2019-05-09 15:52 被阅读0次

对象没有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

相关文章

  • JS错题理解之函数

    对象没有call和apply方法,只有函数有;apply可以将数组和类数组一次性的传递进函数中,call只能一个一...

  • JS错题理解之对象

    实例化记得要加new!! 下图代码结果4-2对象在遍历时,可以和数组一样使用for(var I in obj),i...

  • JS之Function类型理解

    JS之Function类型理解 简述 函数实际上也是对象,每个函数都是Function对象的实例,因此,函数名是一...

  • JS学习笔记-构造一个画廊

    主函数main.html JS代码showPic.js代码 说下对onclick函数的理解,这个函数的返回值默认为...

  • JS函数理解

    今天主要详细理一下js中函数的理解。 什么是函数?实现特定功能的n条语句的封装体只有函数是可以执行的,其他类型的数...

  • js 的变量提升和函数提升

    1. 深入理解 js 的变量提升和函数提升 先了解:js没有块级作用域,只有全局作用域,和函数作用域 相同的函数名...

  • 前端资料

    ES6新数据类型 Symbol . js变量提升函数提升 js this js 原型及原型链理解 new做了什么 ...

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

网友评论

      本文标题:JS错题理解之函数

      本文链接:https://www.haomeiwen.com/subject/hcrmoqtx.html