您现在的位置是:首页 > 技术教程 正文

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

admin 阅读: 2024-03-31
后台-插件-广告管理-内容页头部广告(手机)

提示:关键字声明: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 关键字声明的变量不能提前引用

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

2) 不允许重复声明变量

  1. // 声明变量
  2. let index = 100;
  3. let index = 99;// 报错

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

  1. {
  2. // 块级作用域的变量是局部的,是私有的。
  3. let x = 10;
  4. console.log(x);// 10
  5. }
  6. console.log(x);// 报错
  7. {
  8. let x = 50;
  9. console.log(x);// 50
  10. }
  11. // var 全局作用域
  12. for (var i = 0; i < 3; i++) {
  13. buttons[i].onclick = function () {
  14. console.log("i:", i);// i:3
  15. }
  16. }
  17. // let 块级作用域
  18. for (let i = 0; i < 3; i++) {
  19. buttons[i].onclick = function () {
  20. console.log("i:", i);// i:1,2,3
  21. }
  22. }

总结

var  和 let  的区别:

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

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

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

2.const

1.声明常量

  1. // 变量: 值是可以改变的
  2. let a = 100;
  3. a = 99;
  4. a = 98;
  5. // 常量:值是固定的 (基本类型的数据, 如果数据为引用类型,那么可以间接的修改)
  6. // const b = 1;
  7. // b = 2;// 报错
  8. const arr = ['red','green','blue'];
  9. // arr = ["红色","绿色","蓝色"];
  10. // 通过索引值间接的修改
  11. arr[0] = "红色";
  12. arr[1] = "绿色";
  13. arr[2] = "蓝色";
  14. console.log(arr);

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

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

三、 长度单位

1.em与rem

1).em

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

  1. <style>
  2. body {
  3. font-size: 20px;
  4. }
  5. .parent {
  6. font-size: 40px;
  7. }
  8. /* 1em = ?px; 由父元素的字体属性决定。 此处是1em = 40px */
  9. .box-2 {
  10. width: 10em;
  11. height: 10em;
  12. background-color: green;
  13. }
  14. style>
  15. <div class="parent">
  16. div>

2).rem

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

  1. <style>
  2. /* html: 根元素 */
  3. html {
  4. font-size: 30px;
  5. }
  6. .big {
  7. font-size: 100px;
  8. }
  9. /* 1rem = ?px 由根元素的字体属性决定。默认1rem = 16px */
  10. .box-3 {
  11. width: 10rem;
  12. height: 10rem;
  13. background-color: blue;
  14. font-size: 16px;
  15. }
  16. style>
  17. <div class="big">
  18. <div class="box-3">rem单位(可变的,由根元素字体大小变化)div>
  19. div>

设置rem的值

  1. html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>基本模板title>
  8. <style>
  9. html {
  10. font-size: 20px;
  11. }
  12. .box {
  13. /* 1rem = 20px */
  14. width: 5rem;
  15. height: 5rem;
  16. background-color: red;
  17. }
  18. style>
  19. head>
  20. <body>
  21. <div class="box">div>
  22. <script>
  23. ; (function () {
  24. // 初始化html标签的字体
  25. const init = function () {
  26. // 根元素
  27. const html = document.documentElement;
  28. // 视口宽度
  29. const width = document.documentElement.offsetWidth || window.innerWidth;
  30. // 设计稿的宽度
  31. const w = 320;
  32. // 默认字体20px
  33. const value = 20;
  34. // html标签字体大小结果
  35. let fontSize = width / w * value;
  36. // 设置html标签字体
  37. html.style['fontSize'] = fontSize + "px";
  38. }
  39. // 初始化html字体
  40. init();
  41. // 监听页面尺寸变化
  42. window.addEventListener('resize', init);
  43. })()
  44. script>
  45. body>
  46. html>

 

2.vw与vh

  1. <style>
  2. /* 1vw = 百分之?的屏幕的宽度 */
  3. /* 1vh = 百分之?的屏幕的高度 */
  4. /* 假设在320的视口尺寸下,设置盒子宽度100px 高度100px
  5. 1vw = 320 * (1 / 100)
  6. 100 / 320 * 100 = 31.25vw
  7. */
  8. .box-4 {
  9. width: 31.25vw;
  10. height: 31.25vw;
  11. background-color: deeppink;
  12. }
  13. style>
  14. <div class="box-4">
  15. vw (视口宽度)
  16. div>

四、 解构赋值

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

  1. html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>基本模板title>
  8. <style>style>
  9. head>
  10. <body>
  11. <script>
  12. // 1) 赋值
  13. // 定义a,b,c三个变量
  14. // let a = "red";
  15. // let b = "green";
  16. // let c = "blue";
  17. // 2) 数组解构赋值
  18. let arr = ["red", "green", "blue"];
  19. // 左右两个结构相同才能进行赋值
  20. let [a, , c] = arr;
  21. console.log(a, c);// red blue
  22. // 3) 对象解构赋值
  23. let obj = { x: 100, y: 500, r: 400 };
  24. // 同样需要注意左右两侧的数据结构,使用的是对象中的key
  25. let { x, y, r, w } = obj;
  26. console.log(x, y, r, w);
  27. // 遇到结构较复杂如何解剖赋值
  28. let { result: [{ num: aa }, { num: bb }, { num: cc }] } = { result: [{ num: 100 }, { num: 200 }, { num: 300 }] }
  29. console.log(aa);// 100
  30. console.log(bb);// 200
  31. console.log(cc);// 300
  32. let { data:[i,j,k] } = { data: [111, 222, 333] };
  33. console.log(i,j,k);// 111 222 333
  34. // 数组: [0,1,2,3,4,....]
  35. // 对象: {key: value}
  36. // let [] = [];
  37. // let {} = {};
  38. // 使用解构赋值这种方式记录数据的时候,需要注意左右两侧数据结构要相同,否则无法赋值。
  39. script>
  40. body>
  41. html>

五、箭头函数

1.基本语法

  1. html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>基本模板title>
  8. <style>style>
  9. head>
  10. <body>
  11. <script>
  12. // 普通函数
  13. const sayHello = function(){
  14. console.log("这就是一个普通函数!!!")
  15. }
  16. sayHello();
  17. // 箭头函数
  18. // 使用箭头 => 声明的代码块
  19. const speakHello = () => {
  20. console.log("这就是一个箭头函数~~~")
  21. }
  22. speakHello();
  23. script>
  24. body>
  25. html>

2.语法

  1. html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>基本模板title>
  8. <link rel="stylesheet" href="./libs/bootstrap/css/bootstrap.min.css">
  9. head>
  10. <body>
  11. <button class="btn btn-success m-3">点击按钮button>
  12. <script>
  13. // 1. 代码块
  14. // 1.1 *********
  15. // const add = () => {
  16. // console.log('test')
  17. // }
  18. // add();
  19. // 1.2 *********
  20. // 有参数而且是一个参数的情况
  21. // const add = x => {
  22. // console.log(x)
  23. // }
  24. // add(1000);
  25. // 1.3 *********
  26. // const add = (x,y) => {
  27. // console.log(x,y)
  28. // }
  29. // add(1000,9999);
  30. // 1.4 *********
  31. // 返回值
  32. // const add = (x,y) => {
  33. // return x + y
  34. // }
  35. // let r = add(1000,9999);
  36. // console.log(r);// 10999
  37. // 1.5 *********
  38. // 意思是返回x+y的结果
  39. // const add = (x,y) => x + y;
  40. // let r2 = add(1,2);
  41. // console.log(r2);// 3
  42. // 1.6 *********
  43. // 接收单一参数的函数
  44. // 柯里化函数
  45. // const add = function(x) {
  46. // return function(y){
  47. // return function(z){
  48. // return x + y + z;
  49. // }
  50. // }
  51. // }
  52. // let r3 = add(1)(2)(3);
  53. // console.log(r3);// 6
  54. // 1.7*********
  55. // 箭头函数
  56. // const add = x => y => z => x + y + z;
  57. const add = x => y => z => x + y + z;
  58. // let r4 = add(1)(2)(3);
  59. // console.log(r4);// 6
  60. // 可以让书写函数代码的风格要更加简约!!
  61. // 2. 事件函数
  62. const butt = document.querySelector(".btn-success");
  63. // 注意this的使用
  64. // butt.onclick = function(){
  65. // console.log(this);// 事件调用者,就是按钮标签
  66. // }
  67. // console.log(this);// window
  68. // butt.onclick = () => {
  69. // console.log(this);// window
  70. // }
  71. // 3. 回调函数
  72. // setTimeout(function(){},100)
  73. // setTimeout(()=>{
  74. // document.body.className="bg-danger";
  75. // },100)
  76. // let arr = [111,222,333];
  77. // // arr.forEach(function(item,index){})
  78. // arr.forEach((item,index)=>{
  79. // console.log(item,index);
  80. // })
  81. // arguments会报错
  82. // const foo = (a,b) => {
  83. // console.log(arguments);
  84. // }
  85. // foo(1,2)
  86. // arguments不会报错
  87. // const foo = function(a,b) {
  88. // console.log(arguments);
  89. // }
  90. // foo(1,2)
  91. // 构造函数
  92. const Person = function (name) {
  93. this.name = name;
  94. }
  95. const p1 = new Person("小明");
  96. console.log(p1);// Person {name: '小明'}
  97. // Uncaught TypeError: Animal is not a constructor
  98. // 报错
  99. // const Animal = (name)=> {
  100. // this.name = name;
  101. // }
  102. // new Animal("小狮子")
  103. // 注意:
  104. // 1. 箭头函数作用域没有this的概念
  105. // 2. 箭头函数作用域没有arguments对象
  106. // 3. 箭头函数不能作为构造函数使用,也不能作为原型对象的函数
  107. script>
  108. body>
  109. html>

 

 

 

 

 

 

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜