美文网首页
JS里的函数

JS里的函数

作者: 加油吧_ | 来源:发表于2018-05-18 14:44 被阅读10次

1. 五种声明方式

1.1 具名函数
function f(x,y) { return x+y }
f.name // 'f'

1.2.匿名函数
var f;
f = function(x,y){
return x+y
}
f.name // 'f'

1.3 具名函数赋值
var f;
f = function f2(x,y){ return x+y }
f.name // 'f2'
console.log(f2) // undefined

1.4 window.Function
var f = new Function('x','y','return x+y')
f.name // "anonymous"

1.5 箭头函数
var f = (x,y) => { return x+y}
var sum = (x,y) => x+y
var n2 = n => n*n

2. 函数的本质

函数:可以执行代码的对象就是函数。

函数调用:f.call(undefined,1,2)

从第二个开始传第一个参数

functionf(x,y){return x+y}
f.call(undefined,1,2)   // 3
f.call(undefined,3,4)  // 7

3. this 和 arguments

如何调用函数
f.call(asThis, input1,input2)
其中 asThis 会被当做 this,[input1,input2] 会被当做 arguments
禁止使用 f(input1, input2),因为学会 .call 才能理解 this

function f(){
    'use strict'
    console.log(this)
    console.log(arguments)
    return undefined
}

f.call(1,2,3) // this 为 1,arguments 为 [2,3]
this: call 的第一个参数(undefined)


this.png

arguments:call 的后面的参数可以用arguments得到

4. Call Stack 和 递归

callStack1.png call Stack2.png

5. 作用域 和 变量提升

作用域1.png

变量提升

变量提升1.png

作用域 与 变量提升的三大面试题

1 拿到题目,先变量提升

var a = 1;
function f1(){
    alert(a) // 是多少
    var a = 2
}
f1.call()  //undefined

2

var a = 1;
function f1(){
    var a = 2
    f2.call()
};
function f2(){
    console.log(a) 
}
f1.call()   //1

3

var liTags = document.querySelectorAll('li')
for(var i = 0; i<liTags.length; i++){
    liTags[i].onclick = function(){
        console.log(i) // 点击第3个 li 时,打印 2 还是打印 6?
    }
}     //6        

相关文章

  • JS 里的函数

    讲函数前,先了解Function和function的区别。 function是关键字(if else var )f...

  • JS里的函数

    1. 五种声明方式 1.1 具名函数function f(x,y) { return x+y }f.name /...

  • JS里的函数

    JavaScript里面共有七种数据类型,分别为number、string、boolean、symbol、unde...

  • JS里的函数

    函数 函数, function, 是一个关键字, 表示声明一个函数, 是一个变量的特例. 每一个函数,都必须有一个...

  • JS 里的函数

    五种声明 具名函数 匿名函数 两边都有名字 和上面的方法有不一致性 window.Function 函数对象 箭头...

  • JavaScript 05 函数

    js函数的概念和作用,js函数的定义,js函数的调用,js事件驱动的概念,js函数的实参和形参,js的作用域,js...

  • js 深入

    * js语法* js的动态函数和匿名函数* js动态函数Functionnew Function();* 匿名函数...

  • 关于import函数时,函数的执行上下文问题

    test.js main.js 这里是想说明:import函数时会同时绑定函数的执行上下文;我们在main.js里...

  • js里的时间函数

    Js获取当前日期时间及其它操作 var date = new Date();date.getYear(); ...

  • js里的filter函数

    参考:https://blog.csdn.net/ctf_0226/article/details/8117191...

网友评论

      本文标题:JS里的函数

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