27函数

函数的 5 种声明

具名函数

 function f(x,y){
     return x+y
 }
 f.name // 'f'

匿名函数

 var f
 f = function(x,y){
     return x+y
 }
 f.name // 'f'

具名函数赋值

 var f
 f = function f2(x,y){ return x+y }
 f.name // 'f2'
 console.log(f2) // undefined
面试会问
window.Function
 var f = new Function('x','y','return x+y')
 f.name // "anonymous"

箭头函数

 var f = (x,y) => {
     return x+y
 }
 var sum = (x,y) => x+y
 var n2 = n => n*n

面试会问:函数的name属性


image.png

如何调用函数 f.call

f.call(asThis, input1,input2)
其中 asThis 会被当做 this,[input1,input2] 会被当做 arguments
image.png

this 和 arguments

function f(){
    'use strict'
    console.log(this)
    console.log(arguments)
    return undefined
}
f.call(1,2,3) // this 为 1,arguments 为 [2,3]
不使用 'use strict',如果没传参,默认this是window,使用 'use strict',如果没传参,默认this是undefined
第一个参数是this,是为了和Java看起来像

作用域---类似树


每次写题目记得把变量提升(function也是哦)


先打印出undefined在1

易错点:f4用的是全局变量的那个a


image.png

这里第七行加了个a=2,然后再调用f4的,所以这时候a已经被赋值2了


无论点击哪一个,都是打印length的值,因为开始就初始化完毕了,值会变化

闭包

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JavaScript 函数重中之重 函数的五种声明方式 如何调用函数 什么是call stack this 和 a...
    joker731阅读 1,196评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,128评论 0 5
  • 1.函数参数的默认值 (1).基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
    赵然228阅读 4,030评论 0 0
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 8,898评论 0 1
  • JavaScript的相关语法知识:1、函数(important)基本上所有的高级语言(C、OC、JavaScri...
    天山雪莲_38324阅读 3,795评论 0 2