前端小白的学习之路(ES6 一)

这篇具有很好参考价值的文章主要介绍了前端小白的学习之路(ES6 一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:关键字声明:let与const,长度单位:em与rem,vw与wh,解构赋值,箭头函数(简介)

目录

一、ES6介绍

二、let&const

1.let

1) 用 let 关键字声明的变量不能提前引用

2) 不允许重复声明变量

3) 可以产生块级作用域 { }  

总结

2.const

三、 长度单位

1.em与rem

1).em

2).rem

2.vw与vh

四、 解构赋值

五、箭头函数

1.基本语法

2.语法


 文章来源地址https://www.toymoban.com/news/detail-851845.html

一、ES6介绍

ES6(ECMAScript 2015)是JavaScript的第六个版本,引入了许多新的语言特性和功能,使得JavaScript更加现代化、强大和易用。

二、let&const

1.let

1) 用 let 关键字声明的变量不能提前引用

// 声明变量
console.log(index);// 报错
let index = 100;
console.log(index);

2) 不允许重复声明变量

// 声明变量
let index = 100;
let index = 99;// 报错

3) 可以产生块级作用域 { }  

{
    // 块级作用域的变量是局部的,是私有的。
    let x = 10;
    console.log(x);// 10
}
console.log(x);// 报错
{
    let x = 50;
    console.log(x);// 50
}

// var 全局作用域
for (var i = 0; i < 3; i++) {
    buttons[i].onclick = function () {
        console.log("i:", i);// i:3
    }
}

// let 块级作用域
for (let i = 0; i < 3; i++) {
    buttons[i].onclick = function () {
        console.log("i:", i);// i:1,2,3
    }
}

总结

var  和 let  的区别:

var会出现变量声明提升, let不能变量声明提升

var可以重复声明,  let 不允许重复声明

var没有块级作用域, let 有块级作用域

2.const

1.声明常量

 // 变量: 值是可以改变的
 let a = 100;
 a = 99;
 a = 98;


 // 常量:值是固定的 (基本类型的数据, 如果数据为引用类型,那么可以间接的修改)
 // const b = 1;
 // b = 2;// 报错
 const arr = ['red','green','blue'];
 // arr = ["红色","绿色","蓝色"];

 // 通过索引值间接的修改
 arr[0] = "红色";
 arr[1] = "绿色";
 arr[2] = "蓝色";
 console.log(arr);

2.和 let 一样,const 也具有块级作用域。 

3. 在使用 const 声明变量时,必须同时进行赋值。

三、 长度单位

1.em与rem

1).em

如果应用于文本,1em 等于当前元素的字体大小。如果应用于非文本元素,1em 等于其父元素的字体大小

<!-- <div class="box-1">px单位(固定的)</div> -->
    <style>
        body {
            font-size: 20px;
        }

        .parent {
            font-size: 40px;
        }

        /* 1em = ?px;  由父元素的字体属性决定。 此处是1em = 40px */
        .box-2 {
            width: 10em;
            height: 10em;
            background-color: green;
        }
    </style>

    <div class="parent">
        <!-- <div class="box-2"><span style="font-size: 16px;">em单位(可变的,由父元素字体大小变化)</span></div> -->
    </div>

2).rem

rem 相对于文档的根元素(<html>)的字体大小。默认情况下,根元素的字体大小是浏览器的默认字体大小,通常为 16px。rem 没有继承性,子元素的字体大小不受父元素的影响,这样可以更好地控制样式。

 <style>
        /* html: 根元素 */
        html {
            font-size: 30px;
        }
        .big {
            font-size: 100px;
        }
        /* 1rem = ?px 由根元素的字体属性决定。默认1rem = 16px */
        .box-3 {
            width: 10rem;
            height: 10rem;
            background-color: blue;
            font-size: 16px;
        }
    </style>
    <div class="big">
        <div class="box-3">rem单位(可变的,由根元素字体大小变化)</div>
    </div>

设置rem的值

<!DOCTYPE html>
<html lang="zh-cn">

<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>基本模板</title>
    <style>
        html {
            font-size: 20px;
        }

        .box {
            /* 1rem = 20px */
            width: 5rem;
            height: 5rem;
            background-color: red;
        }
    </style>
</head>

<body>

    <div class="box"></div>


    <script>
        ; (function () {
            // 初始化html标签的字体
            const init = function () {
                // 根元素
                const html = document.documentElement;
                //  视口宽度
                const width = document.documentElement.offsetWidth || window.innerWidth;
                // 设计稿的宽度
                const w = 320;
                // 默认字体20px
                const value = 20;
                // html标签字体大小结果
                let fontSize = width / w * value;
                // 设置html标签字体
                html.style['fontSize'] = fontSize + "px";

            }
            // 初始化html字体
            init();
            // 监听页面尺寸变化
            window.addEventListener('resize', init);
        })()

    </script>
</body>

</html>

 

2.vw与vh

<style>
        /* 1vw = 百分之?的屏幕的宽度 */
        /* 1vh = 百分之?的屏幕的高度 */

        /* 假设在320的视口尺寸下,设置盒子宽度100px 高度100px
            1vw = 320 * (1 / 100) 
            100 / 320 * 100 = 31.25vw
        */
        .box-4 {
            width: 31.25vw;
            height: 31.25vw;
            background-color: deeppink;
        }
    </style>
    
    <div class="box-4">
        vw (视口宽度)
    </div>

四、 解构赋值

解构赋值(Destructuring Assignment)是一种在 JavaScript 中从数组或对象中提取数据并将其赋值给变量的方式。解构赋值使得从数组或对象中提取数据变得更加简洁和直观。

<!DOCTYPE html>
<html lang="zh-cn">

<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>基本模板</title>
    <style></style>
</head>

<body>


    <script>
        // 1) 赋值 
        // 定义a,b,c三个变量
        // let a = "red";
        // let b = "green";
        // let c = "blue";

        // 2) 数组解构赋值
        let arr = ["red", "green", "blue"];
        // 左右两个结构相同才能进行赋值
        let [a, , c] = arr;
        console.log(a, c);// red blue

        // 3) 对象解构赋值
        let obj = { x: 100, y: 500, r: 400 };

        // 同样需要注意左右两侧的数据结构,使用的是对象中的key
        let { x, y, r, w } = obj;
        console.log(x, y, r, w);



        // 遇到结构较复杂如何解剖赋值
        let { result: [{ num: aa }, { num: bb }, { num: cc }] } = { result: [{ num: 100 }, { num: 200 }, { num: 300 }] }
        console.log(aa);// 100
        console.log(bb);// 200
        console.log(cc);// 300


        let { data:[i,j,k] } = { data: [111, 222, 333] };
        console.log(i,j,k);// 111 222 333


        // 数组: [0,1,2,3,4,....]
        // 对象:  {key: value}
        // let [] = [];
        // let {} = {};
        // 使用解构赋值这种方式记录数据的时候,需要注意左右两侧数据结构要相同,否则无法赋值。

        
    </script>
</body>

</html>

五、箭头函数

1.基本语法

<!DOCTYPE html>
<html lang="zh-cn">
<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>基本模板</title>
    <style></style>
</head>
<body>


    <script>
        // 普通函数
        const sayHello  = function(){
            console.log("这就是一个普通函数!!!")
        }
        sayHello();



        // 箭头函数
        // 使用箭头 => 声明的代码块
        const speakHello = () => {
            console.log("这就是一个箭头函数~~~")
        }
        speakHello();

    </script>
</body>
</html>

2.语法

<!DOCTYPE html>
<html lang="zh-cn">

<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>基本模板</title>
    <link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.min.css">
</head>

<body>


    <button class="btn btn-success m-3">点击按钮</button>

    <script>
        // 1. 代码块
        // 1.1 *********
        // const add = () => {
        //     console.log('test')
        // }
        // add();
        // 1.2 *********
        // 有参数而且是一个参数的情况
        // const add = x => {
        //     console.log(x)
        // }
        // add(1000);
        // 1.3 *********
        // const add = (x,y) => {
        //     console.log(x,y)
        // }
        // add(1000,9999);
        // 1.4 *********
        // 返回值
        // const add = (x,y) => {
        //    return x + y
        // }
        // let r = add(1000,9999);
        // console.log(r);// 10999
        // 1.5 *********
        // 意思是返回x+y的结果
        // const add = (x,y) => x + y; 
        // let r2 = add(1,2);
        // console.log(r2);// 3
        // 1.6 *********
        // 接收单一参数的函数
        // 柯里化函数
        // const add = function(x) {
        //     return function(y){
        //         return function(z){
        //             return x + y + z;
        //         }
        //     }
        // }
        // let r3 = add(1)(2)(3);
        // console.log(r3);// 6
        // 1.7*********
        // 箭头函数
        // const add = x => y => z => x + y + z;
        const add = x => y => z => x + y + z;
        // let r4 = add(1)(2)(3);
        // console.log(r4);// 6

        // 可以让书写函数代码的风格要更加简约!!

        // 2. 事件函数
        const butt = document.querySelector(".btn-success");
        // 注意this的使用
        // butt.onclick = function(){
        //     console.log(this);// 事件调用者,就是按钮标签
        // }

        // console.log(this);// window
        // butt.onclick = () => {
        //     console.log(this);// window
        // }

        // 3. 回调函数
        // setTimeout(function(){},100)
        // setTimeout(()=>{
        //     document.body.className="bg-danger";
        // },100)

        // let arr = [111,222,333];
        // // arr.forEach(function(item,index){})
        // arr.forEach((item,index)=>{
        //     console.log(item,index);
        // })

        // arguments会报错
        // const foo = (a,b) => {
        //     console.log(arguments);
        // }
        // foo(1,2)


        // arguments不会报错
        // const foo = function(a,b) {
        //     console.log(arguments);
        // }
        // foo(1,2)


        // 构造函数
        const Person = function (name) {
            this.name = name;
        }
        const p1 = new Person("小明");
        console.log(p1);// Person {name: '小明'}


        // Uncaught TypeError: Animal is not a constructor
        // 报错
        // const Animal = (name)=> {
        //     this.name = name;
        // }
        // new Animal("小狮子")

        // 注意:
        // 1. 箭头函数作用域没有this的概念
        // 2. 箭头函数作用域没有arguments对象
        // 3. 箭头函数不能作为构造函数使用,也不能作为原型对象的函数

    </script>
</body>

</html>

 

 

 

 

 

 

到了这里,关于前端小白的学习之路(ES6 一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 前端基础(ES6 模块化)

    前端基础(ES6 模块化)

    前言:前面学习了js,引入方式使用的是script s\\\"XXX.js\\\",今天来学习引入文件的其他方式,使用ES6 模块化编程,学习组件化编程中的全局注册和局部注册的方法。 目录 复习 ES6 模块化导出导入 解构赋值 导入js文件 export default 全局注册 局部注册 回顾前面学习内容,用script s\\\"

    2024年02月11日
    浏览(43)
  • 前端面试问题汇总 - ES6篇

    let 和 const 声明 : 引入块级作用域的变量声明方式,let 声明的变量可重新赋值,const 声明的变量不可重新赋值。 箭头函数 (Arrow Functions): 提供了更简洁的函数定义语法,并且没有自己的 this、arguments、super 或 new.target,这些值继承自执行上下文。 模板字符串 (

    2024年04月16日
    浏览(6)
  • 第一章前端开发ES6基础

    认识ES6 概述 ES6表示ECMAScript规范的第六版,正式名称为 ECMAScript 2015 ,ECMAScript是由ECMA国际标准组织制定的一项 脚本语言 的标准规范化,引入了许多新特性和语法。 其中包括 箭头函数、let和const声明、类、模板字符串、解构赋值、参数默认值、展开操作符、Promise 等等。这些

    2024年02月08日
    浏览(10)
  • 第二章前端开发ES6基础

    目录 扩展运算符 概述 语法 应用 模板字符串 概述 应用 内置对象扩展 概述 数组扩展方法 字符串扩展方法 set数据结构 概述 基本使用 操作方法 遍历方法 认识symbol 概述 作用 基本使用 项目 扩展运算符 概述 扩展运算符(spread operator)是 ES6 中新增的一种运算符,用 三个点(

    2024年02月07日
    浏览(14)
  • ES6 ~ ES11 学习笔记

    ES6 ~ ES11 学习笔记

    ·课程地址 let 不能重复声明变量(var 可以) let 具有块级作用域,内层变量外层无法访问 let 不存在变量提升(运行前收集变量和函数,提前声明),但是 var 存在变量提升: 不影响作用域链: 案例: 如果在 for 循环中使用了 var 声明 i,那么它会被提升到全局作用域 window

    2024年02月21日
    浏览(7)
  • 前端面试:【前端工程化】CommonJS 与 ES6 模块

    嗨,亲爱的前端开发者!在现代Web开发中,模块化是构建可维护和可扩展应用程序的关键。本文将深入探讨两种主要的JavaScript模块系统:CommonJS 和 ES6 模块,以帮助你了解它们的工作原理、用法以及如何选择合适的模块系统。 1. CommonJS: 用途: CommonJS 是一种模块系统,最初

    2024年02月11日
    浏览(42)
  • 前端架构师之01_ES6_基础

    简单来说,ECMAScript是JavaScript语言的国际标准,JavaScript是实现ECMAScript标准的脚本语言。 2011年,ECMA国际标准化组织在发布ECMAScript 5.1版本之后,就开始着手制定第6版规范。 存在的问题:这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个人不断提交新功能

    2024年02月07日
    浏览(20)
  • 前端技术栈 - ES6 - Promise -模块化编程

    前端技术栈 - ES6 - Promise -模块化编程

    ECMAScript 6.0(简称ES6)是JavaScript语言的下一代标准, 2015年6月发布. ES6设计目标: 达到JavaScript语言可以用来编写复杂的大型程序, 成为企业级开发语言. ECMAScript和JavaScript的关系就: ECMAScript是JavaScript的规范/规则, JavaScript是ECMAScript的一种实现. let.html +与,的区别 let_detail.html 细节1. l

    2024年02月11日
    浏览(737)
  • es6的学习

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? 要讲清楚这个问题,需要回顾历史

    2024年02月11日
    浏览(6)
  • ES6学习-Class类

    constructor 构造方法 this 代表实例对象 方法之间不需要逗号分隔,加了会报错。 类的数据类型就是函数,类本身就指向构造函数。 类的所有方法都定义在类的 prototype 属性上面 类的内部所有定义的方法,都是不可枚举的(non-enumerable) ES6类内部定义的方法不可枚举;ES5可以

    2024年02月14日
    浏览(10)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包