美文网首页
箭头函数和立即执行函数

箭头函数和立即执行函数

作者: 我是Msorry | 来源:发表于2021-01-05 09:00 被阅读0次

箭头函数

箭头函数和普通函数有什么区别?如果把箭头函数转换为不用箭头函数的形式,如何转换
主要是this的差别,箭头函数里面的this是外面的this。 转换案例

箭头函数和普通函数的主要区别是箭头函数的 this 是外部环境的

 const obj = {
     a: 1,
     fn: () => {
         console.log(this.a)
     }
 }
//转换成
 var _this = this
 var obj = {
     a: 1,
     fn: function fn() {
         console.log(_this.a)
     }
 }

箭头函数内定义的变量及其作用域

// 常规写法
var greeting = () => {let now = new Date(); return ("Good" + ((now.getHours() > 17) ? " evening." : " day."));}
greeting();          //"Good day."
console.log(now);    // ReferenceError: now is not defined 标准的let作用域

// 参数括号内定义的变量是局部变量(默认参数)
var greeting = (now=new Date()) => "Good" + (now.getHours() > 17 ? " evening." : " day.");
greeting();          //"Good day."
console.log(now);    // ReferenceError: now is not defined

// 对比:函数体内{}不使用var定义的变量是全局变量
var greeting = () => {now = new Date(); return ("Good" + ((now.getHours() > 17) ? " evening." : " day."));}
greeting();           //"Good day."
console.log(now);     // Fri Dec 22 2017 10:01:00 GMT+0800 (中国标准时间)

// 对比:函数体内{} 用var定义的变量是局部变量
var greeting = () => {var now = new Date(); return ("Good" + ((now.getHours() > 17) ? " evening." : " day."));}
greeting(); //"Good day."
console.log(now);    // ReferenceError: now is not defined

立即执行函数

  1. 声明一个匿名函数
  2. 马上调用这个匿名函数
!function(){}()

作用

创建一个独立的作用域,即避免变量污染

var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
  liList[i].onclick = function(){
    alert(i) // 为什么 alert 出来的总是 6,而不是 0、1、2、3、4、5
  }
}
var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
  !function(ii){
    liList[ii].onclick = function(){
      alert(ii) // 0、1、2、3、4、5
    }
  }(i)
}

相关文章

  • 箭头函数和立即执行函数

    箭头函数 箭头函数和普通函数有什么区别?如果把箭头函数转换为不用箭头函数的形式,如何转换主要是this的差别,箭头...

  • JS基础 -- 立即执行函数

    /** 立即执行函数* 函数定义完,立即被调用,这种函数焦作立即执行函数* 立即执行函数往往只会执行一次** ...

  • js基础问题

    1.函数作为参数传值,后面加个括号则为立即执行该函数后,返回结果作为参数传值例如: 2.箭头函数没有自己的执行上下...

  • 立即执行函数

    本文涉及知识点 什么是立即执行函数? 立即执行函数有什么用? 什么是立即执行函数? 立即执行函数就是: 声明一个匿...

  • JS箭头函数与传统JavaScript函数使用与区别

    箭头函数的特性: 对this的关联。箭头函数内置的this的值,取决于箭头函数在哪定义,而非箭头函数执行的上下文环...

  • JS重要概念之立即执行函数与闭包高级

    #立即执行函数表达式IIFE,简称“立即执行函数” 立即执行函数表达式,IIFE(immediately-invo...

  • 九 立即执行函数

    立即执行函数除了执行完立即释放,跟普通函数没有区别。 返回值,执行期上下文,预编译等函数有的,立即执行函数都是有的...

  • 复习笔记之API(14)

    立即执行函数 立即执行函数:不需要调用,立马能够自己执行的函数作用:创建一个独立作用域,立即执行函数里面所有的变量...

  • javascript作用域和作用域链

    立即执行函数表达式是什么?有什么作用? 立即执行函数就是 声明一个匿名函数 马上调用这个匿名函数 立即执行函数有什...

  • Js立即执行函数

    js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,...

网友评论

      本文标题:箭头函数和立即执行函数

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