JavaScript函数

2020-10-09  本文已影响0人  efho

函数5种声明

函数是变量(7种)的特例。console.log永远返回undefined,打印和返回无关

1. 具名函数  

function(关键字) x(input1, input2){

return undefined   //不写或只写return的话自动返回undefined

}

2. 匿名函数

使用匿名函数必须声明一个变量

var x = function (a,b){  return  }

3. 函数有名字且交给一个变量

var x = function y(a, b){}

和直接声明function y有什么区别?

写 function y(){}可以立刻使用,也可以console.log(y),但是var x = function y(a, b){},console.log(y)报错,不一致,就是js垃圾之处,单独记忆。

4. 基本不会用 window.Function 函数对象

new Function('x', 'y', 'return x+y')     第一参数,第二参数 返回值

面试题:

var n = 1

f = new Function('x', 'y', 'return x +' + n + '+y')

f(1,2) = 4 or '1n2'     4!!!

5. (x, y) => {return x+y}  箭头函数

sum = (x,y) => {return x+y}   复杂情况用;

若参数只有一个,括号可以不要。 n2 = n=> n*n


function f(){}

f.name === undefined

var f2 = function(){}

f2.name === undefined

var f3 = function f4(){}         有点离谱难懂。。。。。

f3.name === 'f4'

f5 = new Function('x', 'y', 'return x+y')

f5.name === 'anonymous' 

函数是可以执行一段代码的对象。

f(1,2)不是真实用法是( 糖 ),f.call(undefined, 1, 2)是真正的 (硬核) 调用方法。

call的第一个参数,可以用this得到;call 的后面的参数,可以用arguments得到

在函数普通模式下,如果this传undefined,则默认是window。

在函数严格模式下,如果this传undefined,则为undefined。

f = functin(){

'use strict'

}


函数作用域:是的数据结构

a = 3 (无var)优先赋值,当前作用范围无,去父亲那里找,找到赋值,找不到声明全局变量、并赋值

看到代码首先先进行声明提升!!!!!划分他们的作用域


闭包:如果一个函数,使用了它范围外的变量,那么这个函数+这个变量就叫闭包。


setInterval   需要随时可能把它砸了

若需要砸,则:var timerId = setInterval( ()=>{console.log(1)  }, 1000   )

例如鼠标进入桌面就砸了闹钟,

  $('.window').on('mouseenter', function(){

window.clearInterval(timerId)

})

鼠标走了,闹钟再走

  $('.window').on('mouseleave', function(){

timerId = setInterval(()  => {}, 1000      )

...

}

上一篇 下一篇

猜你喜欢

热点阅读