ES6初级

本文详细介绍了ES6中的新特性,包括let和const的块级作用域,它们与var的区别,以及它们在变量声明和常量定义中的应用。此外,还讲解了对象解构赋值、模板字符串、简化对象写法和箭头函数的使用,包括参数、返回值和this的处理。最后,通过实例展示了箭头函数如何改变this的指向,以及它不包含arguments对象的特点。

- ES6 简介

它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。

获取DOM元素

<script>
  // 单个元素的获取
  console.log(document.querySelector('.box'));
  console.log(document.querySelector('#app'));
  // 多个元素的获取
  console.log(document.querySelectorAll('div'));
</script>

- let

◼ let 关键字用来声明变量,使用 let 声明的变量有几个特点:
◼ 1) 不允许重复声明
◼ 2) 块儿级作用域
◼ 3) 不存在变量提升
◼ 4) 不影响作用域链

  • let关键字就是用来声明变量的
<script>
  let a = 10;
  console.log(a);
</script>

let声明的变量只在所处于的块级有效

<script>
  if (true) {
    let a = 10;
  }
  console.log(a);//a is not defined
</script>
 if (true) {
   let b = 20;
   console.log(b);
   if (true) {
     let c =30; 
    }
    console.log(c);
 }

在这里插入图片描述

<script>
  // var是没有块级作用域 for  if
  for (var i = 0; i < 10; i++) {

  }
  console.log(i);

  if(true){
    var f = 'abc'
  }
  console.log(f);

  // let 的块级作用域
  for(let index =0;index<10;index++){

  }
  // console.log(index); // index is not defined
  if(true){
    let n = false
  }
  console.log(n); // n is not defined
</script>

在这里插入图片描述

<script>
  // var 具有作用域链
  function fn() {
    var a = 10
    function fn1() {
      var b = 10
      console.log(a + b);  // 20
    }
    function fn2() {
      var c = 20
      console.log(a + b + c);  //  报错
    }
    fn1()
    fn2()
  }
  // fn()

  // let 不影响作用域链
  function foo() {
    let a = 10
    function fn1() {
      let b = 10
      console.log(a + b);  // 20
    }
    function fn2() {
      let c = 20
      console.log(a + b + c);  //  报错
    }
    fn1()
    fn2()
  }
  foo()
</script>

- const

<script>
if (true){
  const a = 10;
  if (true){
    const a =20
    console.log(a);
  }
  console.log(a);
}
console.log(a);
</script>

在这里插入图片描述

  • 声明常量必须赋初始值
<script>
//使用const关键字声明的常量必须赋初始值
const p1;
</script>

在这里插入图片描述

<script>
//使用const关键字声明的常量必须赋初始值
//常量赋值后,值不能修改
const p1 = 3.14;

const ary = [100,200];
ary[0] = 123;
ary = [1,2]
console.log(ary);

</script>

在这里插入图片描述
const 块级作用域

<script>
for (let index = 0; index<10; index++){
  const a = 20
  var b = 10  //var 定义的变量在for循环中是没有块级作用域的

}
console.log(b);
if(true){
  const foo = false
}
//console.log(foo); 错误 const 在for和if都是具有块级作用域    
</script>

-对象属性改变和数组元素改变不会触发const错误

<script>
  // const定义的对象,属性更改不会触发const错误
  const obj = {
    name:'张三',
    age:10,
    sayHi:function(){
      console.log(this.name+': hi ');
    }
  }
  obj.name = '王五'
  obj.sayHi()
  obj.weight = '50'
  console.log(obj);

  // const定义的数组,数组元素的更改不会触发const错误
  const arr = []
  arr.push(10,20,30,40)
  console.log(arr);
</script>
  • 应用场景
<script>
  // 声明对象和数组类型使用 const
  // 在只读情况下使用const
  // 在允许被修改的时候使用let
</script>

结构赋值

  • 数组的结构赋值
<script>
  const arr = ['张学友', '刘德华', '黎明', '郭富城']
  // 数组的解构赋值=>根据数组的下标有顺序的进行赋值
  const [zhang,liu,li] = arr

  console.log(zhang,liu,li);
</script>

在这里插入图片描述

  • 对象的结构赋值
<script>
  const lin = {
    name: '林志颖',
    tags: ['车手', '歌手', '小旋风', '演员'],
    sayHi:function(){
      console.log('唱歌');
    }
  };
  // 对象的解构赋值是将对象中的各个属性取出来,变量名称必须与属性名称一致
  const {name,sayHi,tags} = lin
  console.log(name,tags);
  sayHi()
</script>

在这里插入图片描述

  • 复杂结构
<script>
  let wangfei = {
    name: '王菲',
    age: 18,
    songs: ['红豆', '流年', '暧昧', '传奇'],
    history: [
      { name: '窦唯' },
      { name: '李亚鹏' },
      { name: '谢霆锋' }
    ]
  };
  const {
    songs: [one, two, three, four], // 数组的解构 =>string,string,string,string
    history: [first, second, third] // 数组的解构 =>obj,obj,obj
  } = wangfei
</script>

模板字符串

<script>
  // 模板字符串 `` 获取变量 ${}
  const books = ['Javascript', 'Vue', 'React', 'Es6']
  let str = ''
  for (let index = 0; index < books.length; index++) {
    str += `
      <li>${books[index]}</li>
    `
  }
  // 获取DOM对象
  document.querySelector('ul').innerHTML = str
</script>

在这里插入图片描述

- 简化对象的写法

<script>
let name = '张三'  
let age = 20
const sayHi = function(){
  console.log('hi');
}
//原始写法
let obj = {
  name: name,
  age: age,
  sayHi: sayHi
}
console.log(obj);

let newObj = { name, age, sayHi }
  console.log(newObj);

  const person = {
    sayHi:function(){
      console.log(11);
    }
  }
  // 对象中的方法后:function是可以省略的
  const newPerson = {
    sayHi(){
      console.log(11);
    }
  }
</script>
  • 箭头函数的基本使用
<script>
  // => 带替function()
  const oldFn = function () {
    console.log('oldFn');
  }
  
  oldFn()
  const fn = () => {
    console.log('fn');
  }
  fn()
</script>
  • 带参数的箭头函数
<script>
  const foo = (a,b)=>{
    console.log(a+b);
  }
  foo(10,20)
</script>
  • 带返回值的箭头函数
<script>
  const foo = (a, b) => {
    return a + b
  }
  console.log(foo(10, 20));
</script>
  • 箭头函数的变化
<script>
  // 箭头函数没有参数的情况,括号不可以省略
  const a = () => {
    console.log('没有参数的箭头函数');
  }
  // 箭头函数只有一个参数时,参数的括号可以省略
  const b = a => {
    console.log(a);
    console.log('只有一个参数的箭头函数');
  }
  b(30)

  // 箭头函数只有多个参数时,参数的括号不可以省略
  const n = (a, b) => {
    console.log(a, b);
  }

</script>
  • 变化2
<script>
  // 代码行数只有一行,方法体的大括号可以省略
  const foo = () => console.log('代码行数只有一行,方法体的大括号可以省略')
  foo()

  // 代码行数只有一行,有返回值的情况,方法体的大括号和return可以省略的
  const sum = (a, b) => a + b
  console.log(sum(10, 20));

  
  const a = a => a
  console.log(a('abc'));
</script>
  • 箭头函数的this
<script>
  const obj = {
    name:'张三',
    age:20,
    sayHi(){
      // this
      const _this = this
      setTimeout(function(){
        console.log(this);
        console.log(`你好,${_this.name}`);  // 计时器中的this永远指向与window
      },2000)
    }
  }
  obj.sayHi()


  const obj2 = {
    name:'李四',
    age:20,
    sayHi(){
      setTimeout(()=>{
        console.log(this);  // obj2
        console.log(`你好,${this.name}`);  // 箭头函数没有this指向,指向于最近的this
      },2000)
    }
  }
  obj2.sayHi()
</script>
  • 箭头函数没有arguments
<script>
  const foo = ()=>{
    // console.log(arguments);
  }
  foo(1,2,3)
</script>
**高校专业实习管理平台设计与实现** 本设计项目旨在构建一个服务于高等院校专业实习环节的综合性管理平台。该系统采用当前主流的Web开发架构,基于Python编程语言,结合Django后端框架与Vue.js前端框架进行开发,实现了前后端逻辑的分离。数据存储层选用广泛应用的MySQL关系型数据库,确保了系统的稳定性和数据处理的效率。 平台设计了多角色协同工作的管理模型,具体包括系统管理员、院系负责人、指导教师、实习单位对接人以及参与实习的学生。各角色依据权限访问不同的功能模块,共同构成完整的实习管理流程。核心功能模块涵盖:基础信息管理(如院系、专业、人员信息)、实习过程管理(包括实习公告发布、实习内容规划、实习申请与安排)、双向反馈机制(单位评价与学生反馈)、实习支持与保障、以及贯穿始终的成绩评定与综合成绩管理。 在技术实现层面,后端服务依托Django框架的高效与安全性构建业务逻辑;前端界面则利用Vue.js的组件化特性与LayUI的样式库,致力于提供清晰、友好的用户交互体验。数据库设计充分考虑了实习管理业务的实体关系与数据一致性要求,并保留了未来功能扩展的灵活性。 整个系统遵循规范的软件开发流程,从需求分析、系统设计、编码实现到测试验证,均进行了多轮迭代与优化,力求在功能完备性、系统性能及用户使用体验方面达到较高标准。 **核心术语**:实习管理平台;Django框架;MySQL数据库;Vue.js前端;Python语言。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在电磁散射与雷达技术的研究中,涉及粗糙表面电磁特性模拟的核心概念包括统计参数化建模方法、不同电场矢量方向的极化模式、特定方向的能量反射现象、理想化波前模型以及具有随机起伏特征的界面。以下是对这些要点的系统阐述: 统计参数化建模是一种基于表面统计特征描述其不规则性的电磁散射计算方法,尤其适用于均方根高度较小的粗糙界面在微波至毫米波频段的散射特性分析。 水平极化与垂直极化分别指电场矢量平行于地面和垂直于地面的振动状态。在雷达探测中,采用不同的极化模式有助于提升目标辨识度并抑制环境干扰。 当电磁波与物体相互作用时,部分能量沿接近入射方向返回,这种现象称为反向散射。其在雷达系统的探测灵敏度与目标特征分析中具有关键作用。 平面波是在均匀介质中传播的理想波型,其电场与磁场分布保持一致的相位关系,常作为理论简化模型用于电磁问题的解析与数值计算。 粗糙界面指具有随机起伏特征的表面,其不规则程度可通过均方根高度进行量化。这种结构特性会改变电磁波的传播路径与能量分布,进而影响信号的接收与处理。 相关压缩文件可能包含了实现上述建模方法的程序代码,通常采用数值计算语言编写,用于模拟不同极化状态下粗糙表面对平面波的反向散射响应。通过此类仿真,能够预测各类场景下的散射参数,为雷达系统设计与遥感数据解译提供理论依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值