【JavaScript解析】ES6定义变量与箭头函数详解

这篇具有很好参考价值的文章主要介绍了【JavaScript解析】ES6定义变量与箭头函数详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【JavaScript解析】ES6定义变量与箭头函数详解

箭头函数可以说是ES6的一大亮点,使用箭头函数,可以简化编码过程,使代码更加的简洁

本文由千锋前端老师独家创作,主要给大家介绍了关于ES6中箭头函数的相关资料,文中通过实例代码介绍的非常详细,觉得有帮助的话可以【关注】持续追更~

ES6定义变量

我们现在知道定义(声明)一个变量用的是var

在ES6中又增加了两种定义(声明)变量的方式:let和const

let声明变量: 用let声明的变量也叫变量

const声明变量: 用const声明的变零叫产量

let和const的区别

声明时赋值

用let声明变量的时候可以不赋值

用const声明变量的时候 必须 赋值

值的修改

用let声明的变量的是可以任意修改的

用const声明的变量的是不能修改的,也就是说一经声明就不允许修改

但是 用const声明的对象,对象里面的属性的值是可以修改的

<script> 
    //注意:这里的代码不能整体运行。需要单独运行。这里是为了整体做比较 
    // let 和 const 的区别 
    
    // 1. 声明时赋值 
    let n 
    console.log(n) //undefined 
    n = 200 
    console.log(n) //200 
    // 不能定义常量不赋值 会报错 
    const n2 
    
    // 2. 值的修改 
    let n = 100 
    console.log(n) //100 
    n = 'hello world' 
    console.log(n) //hello world 
    const str = '我是定义时候就写好的内容' 
    console.log(str)
    // 当你试图修改一个 const 定义的常量 直接报错 
    str = 'hello world' 
</script>

let/const和var的区别

预解析

○var 会进行预解析, 可以先使用后定义

○let/const 不会进行预解析, 必须先定义后使用

变量重名

○var 定义的变量可以重名, 只是第二个没有意义

○let/const 不允许在同一个作用域下, 定义重名变量

块级作用域

var 没有块级作用域

let/const 有块级作用域

块级作用域 任何一个可以书写代码段的 {} 都会限制变量的使用范围

if() {}

for () {}

<script> 
    // 注意:代码不能整体运行需要分开运行,为了对比需要 
    //let/const 和 var 的区别 
    
    // 1. 预解析 
    console.log(n) //undefined 
    var n = 100 
    
    // Uncaught ReferenceError: Cannot access 'n2' before initialization 
    //未捕获引用错误:在初始化之前无法访问“n2” 
    console.log(n2) 
    let n2 = 200  
    console.log(n3) // Uncaught ReferenceError: Cannot access 'n3' before initi 
    const n3 = 300 
    
    // // 2. 变量重名 
    var n = 100 
    var n = 200 
    console.log(n) 
    //Uncaught SyntaxError: Identifier 'n1' has already been declared 
    //未捕获的语法错误:标识符“n1”已声明 
    let n1 = 100 
    let n1 = 200 //会报错 
    const n2 = 200 
    const n2 = 300 //会报错 
    
    // 3. 块级作用域 
    if (true) { 
        var n = 100 
        console.log(n) //100 
    }
    console.log(n) // 100 
    if (true) { 
        let n = 200 
        console.log(n) //200 
    } 
        console.log(n) //Uncaught ReferenceError: n is not defined 
        const n = 400 
        if (true) { 
            const n = 300 
            console.log(n) //300 
    } 
        console.log(n) //400 
</script>

案例 -选项卡

<!DOCTYPE html> 
<html lang="en"> 
<head> 
   <meta charset="UTF-8"> 
   <meta name="viewport" content="width=device-width, initial-scale=1.0">     
   <meta http-equiv="X-UA-Compatible" content="ie=edge">  
   <title>Document</title> 
   <style> 
     * { 
       margin: 0; 
       padding: 0; 
     } 
     
     .box { 
       width: 500px; 
       height: 320px; 
       display: flex; 
       flex-direction: 
       column; margin: 50px auto; 
       border: 3px solid #333; 
     } 
     
     .box > ul { 
       height: 60px; 
       display: flex; 
     } 
     
     .box > ul > li { 
       flex: 1; 
       display: flex; 
       justify-content: center; 
       align-items: center; 
       font-size: 30px; 
       color: #fff; 
       background-color: skyblue; 
       cursor: pointer; 
     } 
     
     .box > ul > li.active { 
       background-color: orange; 
     } 
     
     .box > ol { 
       flex: 1; 
       position: relative; 
     } 
     
     .box > ol > li { 
       width: 100%; 
       height: 100%; 
       background-color: purple; 
       font-size: 50px; 
       color: #fff; 
       position: absolute; 
       left: 0; 
       top: 0; 
       display: none; 
     } 
     
     .box > ol > li.active { 
       display: block; 
     } 
   </style> 
</head> 
<body> 

  <div class="box"> 
   <ul> 
     <li class="active">1</li> 
     <li>2</li> 
     <li>3</li> 
   </ul> 
   <ol> 
    <li class="active">1</li> 
    <li>2</li> 
    <li>3</li> 
  </ol>
</div> 

<script> 
   /* 
     案例 - 选项卡 
   */ 
  
   for (let i = 0; i < btns.length; i++) {  
     btns[i].onclick = function () { 
       for (let j = 0; j < btns.length; j++) { 
         btns[j].classList.remove('active') 
         boxs[j].classList.remove('active') 
       } 
    
       btns[i].classList.add('active') 
       boxs[i].classList.add('active') 
     } 
   } 
 
   /* 
 
 
  </script> 
</body> 
</html>

ES6箭头函数

箭头函数是ES6 语法中定义函数的一种新方式,箭头函数只能用来定义函数表达式,所以箭头函数也是匿名函数

当你把函数当做一个值赋值给另一个内容的时候, 叫做函数表达式

声明式函数的定义方式是不能定义箭头函数的

function fn() {} 这样的方式是声明式函数,不能用来定义箭头函数

语法:() => {}

()中书写形参

{}中书写代码片段

箭头函数的特点

可以省略小括号不写

当你的形参只有一个的时候, 可以不写小括号

如果你的形参没有或者两个及以上, 必须写小括号

<script> 
    let fn1 = () => { 
        console.log('我是 fn1 函数, 我没有形参') 
    } 
    fn1() 
        // 一个形参, 可以不写小括号 
    let fn2 = a => { 
        console.log('我是 fn2 函数, 有一个参数', a) 
     } 
     fn2(10) 
         // 两个形参, 必须写小括号 
     let fn3 = (a, b) => { 
         console.log('我是 fn3 函数, 有两个参数', a, b) 
     } 
     fn3(100, 200) 
</script>

●可以省略大括号不写

○当代码只有一句话的时候, 可以省略大括号不写, 并且会自动返回这一句话的结果,否则, 必须写大括号

<script> 
    let fn1 = (a, b) => a + b 
    let res = fn1(10, 20) 
    console.log(res) //30 
    var arr = [1, 2, 3, 4, 5, 6, 7] 
    //演变过程 
    // var res = arr.filter(function (item) { return item % 2 }) 
    // var res = arr.filter((item) => { return item % 2 }) 
    // var res = arr.filter(item => { return item % 2 }) 
    var res1 = arr.filter(item => item % 2) 
    console.log(res1) //[1, 3, 5, 7] 
</script>

箭头函数中没有arguements

箭头函数内天生不带有 arguments。没有所有实参的集合

<script> 
    //普通函数 
    let fn1 = function() { 
        console.log(arguments)//会拿到传递的实参 
    } 
    fn1(10, 20, 30, 40, 50) 
    //箭头函数 
    let fn2 = () => { 
        console.log(arguments)//会报错 
     } 
     fn2(10, 20, 30) 
</script>

●箭头函数内没有this

○箭头函数中的this指向外部作用域

○也就是书写在箭头函数的外面那个函数 this 是谁, 箭头函数内的 this 就是谁

<script> 
    var obj = { 
        name: '我是 obj 对象', 
        f: function() { 
            console.log('f : ', this) //Object 
        }, 
        f2: () => { 
            // 这里没有 this, 用的是 外部的 this 
            console.log('f2 : ', this) //Window 
        } 
     } 
     obj.f() 
     obj.f2() 
</script>

到此这篇关于ES6定义变量与箭头函数讲解的文章就介绍到这了

更多关于ES6的内容可以持续关注我们,技术问题欢迎大家一起交流讨论~文章来源地址https://www.toymoban.com/news/detail-454840.html

到了这里,关于【JavaScript解析】ES6定义变量与箭头函数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript全解析——ES6函数中参数的默认值和解构赋值

    本文为千锋资深前端教学老师带来的【JavaScript全解析】系列,文章内含丰富的代码案例及配图,从0到1讲解JavaScript相关知识点,致力于教会每一个人学会JS! 文末有本文重点总结,可以收藏慢慢看~ 更多技术类内容,主页关注一波! 给函数的形参设置一个默认值, 当你没有传

    2024年02月05日
    浏览(29)
  • ES6系列之let、const、箭头函数使用的坑

    变量提升 块级作用域的重要性 箭头函数this的指向 rest参数和arguments Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在老版本的浏览器执行。这意味着,你可以用ES6的方式编写程序,又不用担心现有环境是否支持。  上面的原始代码用了箭头函数,Babel将其转

    2024年02月14日
    浏览(30)
  • ES6中的箭头函数(arrow function)与普通函数的不同之处

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月10日
    浏览(24)
  • 【JavaScript】JavaScript 变量 ① ( JavaScript 变量概念 | 变量声明 | 变量类型 | 变量初始化 | ES6 简介 )

    JavaScript 变量 是用于 存储数据 的 容器 , 通过 变量名称 , 可以 获取 / 修改 变量 中的数据 ; 变量 的 本质 是 存放数据 的 一块内存空间 ; 在 JavaScript 中, 使用 var / let / const 来声明变量 , 每个变量都有一个 变量名 和 一个 变量值 ; JavaScript 变量声明 : var : 使用

    2024年03月15日
    浏览(39)
  • 深入解析JavaScript中箭头函数的用法

    🧑‍🎓 个人主页: 《爱蹦跶的大A阿》 🔥 当前正在更新专栏: 《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​  ​         箭头函数(Arrow function)是JavaScript ES6中引入的一大特性。箭头函数与传统函数有一些区别,可以帮助我们简化代码并处理一些棘

    2024年01月20日
    浏览(36)
  • 【React系列】ES6学习笔记(一)let与const、解构赋值、函数参数默认值\rest参数\箭头函数、数组和对象的扩展、Set和Map等

    本文参考自电子书《ECMAScript 6 入门》:https://es6.ruanyifeng.com/ 尽量使用 let 声明变量,而不是 var 。 let 声明的变量是 块级作用域 , var 声明的变量是 全局作用域 。 使用 let 变量 必须先声明再使用,否则报错,不存在变量提升 。相对的 var 声明的变量如果提前使用,不会报错

    2024年02月03日
    浏览(34)
  • JavaScript Es6_2笔记 (深入对象 + 内置构造函数 + 包装类型)+包含实例方法

    了解面向对象编程的基础概念及构造函数的作用,体会 JavaScript 一切皆对象的语言特征,掌握常见的对象属性和方法的使用。 了解面向对象编程中的一般概念 能够基于构造函数创建对象 理解 JavaScript 中一切皆对象的语言特征 理解引用对象类型值存储的的

    2024年02月12日
    浏览(38)
  • JavaScript 函数、函数构造、函数调用、参数、函数返回值、变量的作用域、预解析

    一、函数及函数的构造 函数是一个可重用的代码块,用来完成某个特定功能。每当需要反复执行一段代码时,可以利用函数来避免重复书写相同代码。 函数包含着的代码只能在函数被调用时才会执行,就可以避免页面载入时执行该脚本 简单来说就是一个封装,封装的是一个特

    2024年02月06日
    浏览(53)
  • JavaScript保留字和预定义的全局变量及函数汇总

    保留字也称,每种语言中都有该语言本身规定的一些,这些都是该语言的语法实现基础,JavaScript中规定了一些标识符作为现行版本的或者将来版本中可能会用到的,所以当我们定义标识符时就不能使用这些了,下面介绍下JavaScript保留

    2024年01月16日
    浏览(47)
  • 箭头函数 - JavaScript的新宠儿

    📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 CSS专栏:想学CSS的,冲这里 📢 Krpano专栏:想学VUE的,冲这里  📢 JavaScript专栏:想学JavaScript的,冲这里 🔔 上述专栏,都在不定期持续更新中!!!!!!! 目录 ✨ 前

    2024年01月17日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包