js基础语法整理(ES6)

56 阅读3分钟

js核心由三部分组成

  • ECMAScript:由ECMA-262 定义并提供核心功能。
  • 文档对象模型(DOM):提供与网页内容交互的方法和接口。
  • 浏览器对象模型(BOM):提供与浏览器交互的方法和接口。

基础语法

1.声明对象的方式(var\let\const)

var在全局作用域中声明会挂到window对象上

let存在局部作用域

const 声明的限制只适用于它指向的变量的引用。换句话说,如果 const 变量引用的是一个对象, 那么修改这个对象内部的属性并不违反 const 的限制。

暂时性死区

在解析代码时,JavaScript 引擎也会注意出现在块后面的 let 声明,只不过在此之前不能以任何方 式来引用未声明的变量。在 let 声明之前的执行瞬间被称为“暂时性死区”(temporal dead zone),在此 阶段引用任何后面才声明的变量都会抛出 ReferenceError。

ES6

1.解构语法

解构的原理+解构值对之前值的影响(可迭代对象)解构是ES6提供的语法糖,其实内在是针对可迭代对象的Iterator接口,通过遍历器按顺序获取对应的值进行赋值。 完全解构与不完全解构

const student = {
    name: "jsPool",
    age: 20,
    country: china,
    sexual: 'male',
    scores: {
        math: 95,
        chinese: 98,
        english: 93,
    },
};
let { name, scores } = student;
console.log(name, scores);
scores.math = 100;
console.log(name, scores, student.scores);
//解构执行的是浅复制,引用类型解构后值的变化会影响原本的值,是一种更便捷的数据访问机制,避免进行修改,需要进行修改时就需要进行彻底的解构scores:{ math = 0,chinese = 0, english = 0}
jsPool { math: 95, chinese: 98, english: 93 }
jsPool { math: 100, chinese: 98, english: 93 } { math: 100, chinese: 98, english: 93 }

对象解构(属性名)

在解构对象时,是以属性的名称为匹配条件,来提取想要的数据的。对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值,如果没有此变量名则为 undefined。

//同名解构
const { name, country } = person;
//非同名解构 
const { name: fullname, country: place } = person;
//解构时赋默认值 
let { age = 20, sexual: sex = 'male' } = person;
//嵌套解构 
const { name, scores: { math = 0, chinese = 0, english = 0 } } = person;

数组解构(顺序)

//使用占位进行解构
let list = [221,'Baker Street','London'];
let [houseNo,,city] = list;
console.log(houseNo,city);// 221 , London
//解构语法的应用
// 数组合并
let a = [123];let b = [456];let [...c] = [...a, ...b];// c = [1, 2, 3, 4, 5, 6]
// 类数组转数组
let arr = [...arrLike]
// 交换变量的值
let a = 1;let b = 2;[b, a] = [a, b];

2.展开语法

对象的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中。

使用展开语法时遇到同名属性时会发生属性的覆盖(覆盖规则为后面添加的会覆盖之前的内容)

但是它们的成员都是对原数组成员的引用,这就是浅拷贝。如果修改了引用指向的值,会同步反映到新数组。

复制数组/合并数组