ES6基础语法

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

目录

解构

数组解构

对象解构

 基本数据解构

对象

对象简写

箭头函数

扩展运算符

函数参数解构

 对象API拓展

Object.is()

Object.assign()

Object.getPrototypeOf()

Object.setPrototypeOf()

Object.keys() Object.values() Object.entries()

Object.fromEntries()

 数组方法拓展

String类型方法

String.prototype.trimStart()/String.prototype.trimEnd()

String.prototype.padStart() / String.prototype.padEnd()

Function.prototype.toString() 重新修订

数值扩展

Number.isFinite(), Number.isNaN()

 Number.parseInt(), Number.parseFloat()

 Number.isInteger()


解构

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构,解构的本质属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。如果解构不成功,变量的值就等于undefined。

数组解构

// 等号左右两侧模式匹配才可以进行解构
// 完全解构
let [a,b,c] = [1,2,3];
console.log(a,b,c);
let [d,e,f,g,h] = [1,2,3,[4,5],6];
console.log(d,e,f,g,h);
// 不完全解构
let [i,j,[k],l] = [1,2,[3,4,5],6];
console.log(i,j,k,l);
// 集合解构
let [m,...n] = [1,2,3,4,5];
console.log(m,n);
// 默认值解构
let [o,p=1,q] = [];
// let [o,p=1,q] = [1,2,3];
console.log(o,p,q);
// 默认值可以是函数
function test(){
    console.log('hello');
}
let [r=test(),s] = [1,2];
console.log(r,s);
let [t=test(),u] = [];
console.log(t,u);   //函数没有返回值 是undefined

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

对象解构

// 等号左右两侧模式匹配才可以进行解构
// 对属性解构 变量名和函数名必须相同

// 1
// let {name,age} = {name:'jemmy',age:21};
// console.log(name,age);
// 完全写法
// let {name:name,age:age} = {name:'jemmy',age:21};
// console.log(name,age);

// 变量名和属性名不同 给属性名重命名
// let {name:name1,age} = {name:'jemmy',age:21};
// console.log(name1,age);

// 嵌套解构
// let obj = {p:['hello',{y:"world"}]};
// let {p:[a,{y:b}]} = obj;
// console.log(a,b);

// 默认值解构
// let {x:y=3} = {}
// console.log(y);

// 集合解构
// let {a,b,...c} = {a:1,b:2,d:3,e:4};
// console.log(a,b,c);

// 练习
const [a,b,c,...d] = [1,2,3,11,999];
const {e,f,f1,g,...h } = {f:4,g:5,i:6,j:7};
console.log(a,b,c,d,e,f,f1,g,h);
结果:1,2,3,[11,999],undefined,4,undefined,5,{i:6,j:7}

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

 基本数据解构

// 字符串
let [a,b,c,d,e] = 'hello';
console.log(a,b,c,d,e);
let [...arr] = 'world';
console.log(arr);

let {toString,valueOf,length} = 'hello';
console.log(toString,valueOf,length);

// 数字
// let {toString,valueOf} = 10;
// console.log(toString,valueOf);

// 布尔值
// let {toString,valueOf} = true;
// console.log(toString,valueOf);

对象

对象简写

ES6中规定可以直接在对象中写入变量和函数作为对象的属性和方法,此时属性名为变量名, 属性值为变量的值。对象简写在未来的使用频率极其高。

let name='larry';
	let age=12;
	let obj={
		name,
		age,
    	//es5 sayName:function(){}
    	// sayName(){
        //     console.log(this.name) --按照这种形式写this依然指向调用者
        // },
		// sayName:()=>{
		// 	console.log(this)
		// }
		sayName(){
            //this-->obj
			return ()=>{
				console.log(this)
			}
		}
	}
	obj.sayName()();
----------------------------------------------------------
	let name='larry';
    let age=12;
    let sayName=()=>{
        console.log(this)
    }
        let obj={
            name,
            age,
            //es5 sayName:function(){}
            // sayName(){
            //     console.log(this.name)
            // },
            // sayName:()=>{
            // 	console.log(this)
            // }
            sayName(){
                return sayName
            }
        }
        // obj.sayName()()
    //箭头函数没有自己的this,内部this指向声明箭头函数时外部作用域中的this。
    obj.sayName()()

箭头函数

es5函数内部属性有this和arguments,箭头函数内arguments不再保存实参,如果想接受实参,可以使用rest参数

let test=(a,...b)=>{
		//console.log(this,arguments);
        console.log(a,b); //a--1 b--[2,3,4,5]
    }
    test(1,2,3,4,5)

扩展运算符

let arr = [1,2,3,4,5];
let [...a] = arr;
console.log(a);
// 用到左侧是聚合 用到右侧是展开
let obj = {
    name:'jemmy',
    age:27,
    gender:'male'
}
let {...b} = obj;
let temp = {...obj};
// 不影响原来的obj
delete temp.name;
console.log(b,temp,obj);

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

函数参数解构

function test1({name,age,...gender}){
    console.log(name,age,gender);
}
test1({name:'jemmy',age:21,gender:'male'});

function test2({name,age=21,...gender}){
    console.log(name,age,gender);
}
test2({name:'jemmy',gender:'male'});

// ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。通常情况下,定义了默
// 认值的参数, 应该是函数的尾参数,函数的length属性,将返回没有指定默认值的参数个数

function log1(a,b,c,d=1,e,f,g){}
console.log(log1.length);
function log2(h,i,j,k,l,m,n){}
console.log(log2.length);

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

 对象API拓展

Object.is()
Object.assign()
Object.getPrototypeOf()
Object.setPrototypeOf()
Object.keys() Object.values() Object.entries()
Object.fromEntries()

详细看下面代码

// Object.is()  判断两值是否相等或全等
// 特殊案例
console.log(+0 === -0);                 //true
console.log(Object.is(+0,-0));      //false
console.log(NaN === NaN);               //false
console.log(Object.is(NaN,NaN));    //true

// Object.assign() 
// 参数两个或三个 两个为复制对象 三个为合并对象 返回目标对象
// 复制是基本数据类型是值的复制,即深拷贝:引用数据类型是值的引用,即浅拷贝
// 复制对象
let o = {};
let obj = {
    name:'jemmy',
    age:21,
    gender:'male',
    address:{
        home:'1703'
    }
}
var res = Object.assign(o,obj);
console.log(res,obj);
res.name = 'JP';
res.address.home = '1702'
console.log(res,obj);

// 合并对象 
let obj1 = {
    name:'cammy',
    age:18,
}
let obj2 = {
    gender:'female'
}
let obj3 = {
    home:'1703'
}
var res1 = Object.assign(obj1,obj2,obj3);
console.log(res1,obj1,obj2,obj3);

// 访问原型对象 Object.getPrototypeOf() 参数:目标对象
console.log(obj.__proto__);
console.log(obj.constructor.prototype);
console.log(Object.getPrototypeOf(obj));

// 设置原型对象 Object.setPrototypeOf() 参数:目标对象 新原型
Object.setPrototypeOf(obj,obj2)
console.log(obj.__proto__);
console.log(obj.constructor.prototype);
console.log(Object.getPrototypeOf(obj));

// Object.keys() Object.values() Object.entries()
// 将属性名         属性值        属性名和属性值(二维数组)   转为数组
console.log(Object.keys(obj));
console.log(Object.values(obj));
console.log(Object.entries(obj));

// Object.fromEntries()  将二维数组变为对象
var res = Object.entries(obj);
console.log(Object.fromEntries(res));

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

 数组方法拓展

// 静态方法
// Array.from() 将类数组变为数组  Array.of()  创建数组

// 实例方法
// find()  参数回调函数 返回第一个满足条件的元素/undefined    不修改原数组
// let arr = [1,2,3,4,5,4,3,2,1];
// let res = arr.find((item,index,arr)=>{
//     return item > 3;
// })
// console.log(res,arr);

// findIndex()  参数回调函数   返回第一个满足条件的元素的下标/-1    不修改原数组
// let arr = [1,2,3,4,3,1,2];
// let res = arr.findIndex((item,index,arr)=>{
//     return item > 2;
// })
// console.log(res,arr);

// includes() 参数查找的数组元素 返回true/false 不修改原数组
// let arr = [1,2,3,4];
// let res = arr.includes(2);
// console.log(res,arr);

// fill() 用于填充数组 参数要填充的数组元素  修改原数组
// let arr = [1,2,3,2,1];
// let res = arr.fill(4);
// console.log(res,arr);

// keys() values() entries() 参数无  返回一个可迭代对象 不修改原数组
// let arr = [1,2,3,4,5];
// let keys = arr.keys();
// let values = arr.values();
// let entries = arr.entries();
// console.log(keys,values,entries,arr);

// flat 参数可写可不写 n/Infinity 返回展开后的数组  不修改数组
// let arr = [1,2,[3,4,[5,6,[7]]]];
// let res1 = arr.flat();
// console.log(res1);
// let res2 = arr.flat(Infinity);
// console.log(res2);
// console.log(arr);

// flatmap flat和map集合 参数回调函数  返回展开并被操作的结果 不修改原数组
let arr = [1,2,3,4,[5,6,7]];
let res = arr.flatMap((item)=>{
    if(typeof item === 'number'){
        return item*2;
    }else{
        // return item.map((item)=>{return item*2})
        return item.map(item=>item*2);
    }
})
console.log(res,arr);

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

String类型方法

String.prototype.trimStart()/String.prototype.trimEnd()

在接收用户输入的文本,我们经常会把头尾的空格文本去掉,来规避展示的不受控情况。自ES5来,String.prototype.trim() 被用于去除头尾上的空格、换行符等,现在通过 trimStart()trimEnd() 来头和尾进行单独控制。trimLeft()trimRight() 是他们的别名。

String.prototype.padStart() / String.prototype.padEnd()

这两个函数的作用是在头尾添加字符串,它们接收两个参数 str.padStart(targetLength [, padString]),其中 targetLength 表示填充完的字符串长度,padString 表示填充的字符串,默认空格

代码如下:

/**
 * ES6方法                              别名 
 * 1.trimStart 去除字符串头部空格       trimLeft
 * 2.trimEnd   去除字符串尾部空格       trimRight
 */
let str1 = ' hello world ';
// 去除前后空格 ES5方法 trim()
console.log('2' + str1.trim() + '2');
console.log('2' + str1 + '2');
console.log('2' + str1.trimStart() + '2');
console.log('2' + str1.trimEnd() + '2');


/**
 * ES8
 * 1.padStart 向头部填充字符串 参数:填充完字符串的长度 填充字符串
 * 2.padEnd 向尾部填充字符串 参数:填充完字符串的长度 填充字符串
 */
let str = 'es8';
console.log(str.padStart(4));   //默认填充空格
console.log(str.padStart(4).length); 
console.log(str.padStart(4,'0'));   
console.log(str.padStart(2));           //长度小于原字符串长度 返回原字符串
console.log(str.padStart(6,'abcd'));    //填充字符加原字符长度 超过填充长度会截取
console.log(str.padStart(7,'abc'));     //填充字符加原字符长度 不足会重复填充
console.log(str.padEnd(4,'0')); 
console.log(str.padEnd(2));    //长度小于原字符串长度 返回原字符串
console.log(str.padEnd(6,'abcd')); //填充字符加原字符长度 超过填充长度会截取
console.log(str.padEnd(7,'abc')); //填充字符加原字符长度 不足会重复填充

/**
 * replaceAll  将一类字符全部替换 node版本需要高于14
 */
let string = '111234';
var res1 = string.replace('1','x');
console.log(res1);
let reg = /1/g;
console.log(string.replace(reg,'x'));
var res2 = string.replaceAll('1','x');
console.log(res2);

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

Function.prototype.toString() 重新修订

从ES2019开始,Function.prototype.toString()将从头到尾返回源代码中的实际文本片段。这意味着还将返回注释、空格和语法详细信息。

/**
 * function toString 重新修订
 */
function foo(){
    // 我是一个函数

    console.log('text');
}
console.log(foo.toString());

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

数值扩展

Number.isFinite(), Number.isNaN()

与isFinite、isNaN不同,这两个新方法只对数值有效,Number.isFinite()对于非数值一律返回false, Number.isNaN()只有对于NaN才返回true,非NaN一律返回false

/**
 * Number isFinite isNaN
 */
// 以前 isFinite 判断一个值是否是有效值  空字符串、字符串'数字'、布尔值和null会隐式转换为数字
console.log(isFinite());
// 以前 isNaN  判断是否 不是一个数字 null、空字符串和布尔值会隐式转换为数字
console.log(isNaN(null));

// 只对NaN返回true
console.log(Number.isNaN());
// 只会对数值有效 
console.log(Number.isFinite());

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

 Number.parseInt(), Number.parseFloat()

ES6 将全局方法parseInt()parseFloat(),移植到Number对象上面,行为完全保持不变。

// 和之前的效果一样
console.log(Number.parseInt(12.5));
console.log(Number.parseFloat('12.345#'));

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

 Number.isInteger()

Number.isInteger()用来判断一个数值是否为整数。

// 检验一个数是不是整数     不会隐式转换
console.log(Number.isInteger(true));        //false
console.log(Number.isInteger(12.1));
console.log(Number.isInteger(12));

ES6基础语法,HTML+CSS+JS,es6,前端,ecmascript,javascript

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

到了这里,关于ES6基础语法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 后端程序员的前端必备【Vue】 - 07 ES6新语法

    使用let定义变量能更加精准的确定变量的作用域 使用const定义常量,常量一旦定义不可以改变 使用模板字符串可以避免大量的字符串拼接 类似于springmvc中接受参数拥有默认值 使用箭头函数可以简化复杂的代码结构(类似于java中lambda表达式) 箭头函数应用 定义:从一个大的数

    2024年02月04日
    浏览(48)
  • 前端基础(ES6 模块化)

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

    2024年02月11日
    浏览(62)
  • 第一章前端开发ES6基础

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

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

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

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

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

    2024年02月07日
    浏览(44)
  • ES6(ECMAScript 2015)有哪些新属性,如何判断当前浏览器是否支持?

    ES6(ECMAScript 2015)引入了许多新的语法和特性,以增强 JavaScript 编程语言的功能。以下是一些常见的 ES6 语法和特性以及它们的解释: let 和 const 声明 : let 和 const 用于声明变量,代替了旧的 var 。 let 声明的变量具有块级作用域,而 const 声明的变量是不可变的(常量

    2024年02月07日
    浏览(60)
  • ES6核心语法

    主要记录学习ES6的语法 同es5中的var来声明变量。三者的区别分别是: var声明的变量存在变量提升,先声明未赋值,值为undefined。且变量声明可在函数块内使用。变量声明之后可以重复声明 let声明的变量无变量提升。作用域是块级(例如if或者for等等)。不能被重复声明。声

    2024年02月10日
    浏览(34)
  • es6 ...展开语法

    ES6中的...(展开)语法是一种可以将数组或对象展开为函数参数或数组字面量的语法。它通常用于函数调用或数组字面量的展开。 在函数调用中,...可以将一个数组展开为函数的参数列表。例如: js 复制代码   function sum( a, b, c) {   return a + b + c;   }       const numbers = [ 1,

    2024年02月05日
    浏览(31)
  • ES6学习-module语法

    CommonJS模块 ES6模块 这种加载称为“编译时加载”或者静态加载 静态加载带来的各种好处 效率要比 CommonJS 模块的加载方式高。 能进一步拓宽 JavaScript 的语法,比如引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能。 不再需要 UMD 模块格式了,将来服务器

    2024年02月13日
    浏览(34)
  • JavaScript之ES6高级语法(一)

    本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。 今天学习的主要是关于ES6新语法知识的理解和应用 栈负责存放简单数据类型,堆负责存放复杂数据类型,但是复杂数据类型会把内容存在

    2024年02月09日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包