您现在的位置是:首页 > 诗句大全

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

作者:亙句时间:2024-04-08 11:45:24分类:诗句大全

简介  文章浏览阅读818次,点赞11次,收藏11次。:关键字声明:let与const,长度单位:em与rem,vw与wh,解构赋值,箭头函数

点击全文阅读

提示:关键字声明: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.语法


 

一、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>

 

 

 

 

 

 

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句