26 进阶:函数

课堂笔记

  • 函数的声明方法
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
image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,902评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,403评论 1 45
  • 如果可以 要用最好看的字体 把你的名字 一笔一笔写进日记本里 那一页我不会写上日期 这样就能 一生有你
    绚烂夏花阅读 1,877评论 1 1
  • 霜降 霜寒叶落川 雨打菊枝颤 百草风摧折 南飞孤雁艰
    诗韵涵心阅读 1,621评论 0 2
  • 从枫叶熟了开始 想写一句诗 等枇杷落了满地 却忘了怎么写字
    四夕山人阅读 1,382评论 0 1

友情链接更多精彩内容