es6的一些知识点

news/2024/12/22 14:14:58

es6的一些知识点

前言:es6(ECMAscript2015)标准

let、const、var的一些区别
  • let、const 块级作用域、全局作用域、函数作用域

  • var 全局作用域、函数作用域

变量提升的问题:
var        :  true
let、const : false

例子:

console.log(a);//undefind
let a=1;                     

块级作用域:例如在一个函数,for循环。。。区块之内!
const 常量,值不可更改。
let、var 变量,值可以更改

严格模式
  • 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;

  • 消除代码运行的一些不安全之处,保证代码运行的安全;

  • 提高编译器效率,增加运行速度;

  • 为未来新版本的Javascript做好铺垫。

"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。

“use strict”
模板字符串(Template Strings)
  • 规定了一种新的string方法可用 `` 斜引号来创建字符串的代码块

  • 绑定变量用${}来绑定。

let name="xiaosan";
        let age=22;
        let home="china"
        let str1=`she's name ${name},
        she age ${age},
        she homes's ${home}`
        alert(str1)
  • 字符串内可直接换行

let str1=`she's name ${name},
        she age ${age},
        she homes's ${home}`
        alert(str1)
  • 标签模板字符串。

function tag(strings,...args){    //...扩展运算符
           //console.log(strings);
           //console.log(args);
           let str='';
           for(var i=0,l=strings.length-1;i<l;i++){
                str=str+strings[i]+args[i];
           }
           str+=strings[l];
           return str
       }
       let name1="xiaomi";
       let age1=23;
       let str3=tag`
        she's nam1 ${name1}
        she age ${age1}
       `
       console.log(str3)
增强的对象字面量(自变量)
  • 对象属性能够简写;

  • 对象方法可以简写function关键字

let name="张三";
        let age=22;
        let zhangshan={
            name,
            age,
            runing(){
                console.log("我会跑")
            }
        }
  • 对象属性名可以书写自动计算形式

  • 原型继承__proto__

 let people={
            eat(){
                console.log("我会吃")
            },
            speak(){
                console.log("我会说话")
            },
            feeling(){
                console.log("我有感情")
            }
        }
        let caowei={
            name:name,
            __proto__:people,//设置对象原型,用来继承
            study(){
                console.log("I have sutying ok!")
            }
        }
        console.log("my name's"+caowei.name)
        caowei.study();
        caowei.eat();
        caowei.speak();
        caowei.feeling();
         console.log(caowei)
解构赋值
  • es6允许我们按照一定结构提取数组与对象里的值,赋给变量

  • 函数的解构赋值

  • 说的明白一点解构赋值它的类型就是数组跟对象
    例子

//数组
        let [a,,c]=[1,2,3];
        console.log(a,c)
//对象
        let obj={
            x:1,
            y:2
        }
        let {x,y}=obj
        console.log(x,y)//1 2
//函数操作
//函数传对象

        function fn(person){
            let name=person.name;
            let age =person.age;
            console.log(name,age)
        }
        let aa={name:"xiaosan",age:18}
        fn(aa)*/
       /* function fn({uname:name,age,sex="女人"}){
            console.log(name,age,sex)
        }
        let bb={uname:"xiaosan",age:18}
        fn(bb)*/
        //es5 函数传数组
        /*function fn(Arr){
            let x=Arr[0];
            let y=Arr[1];
            let z=Arr[2];
            console.log(x,y,z)
        }*/
        /*function fn([x,y,z,d=22]){
           
            console.log(x,y,z,d)
        }
        let arr=[9,5,8]
        fn(arr)
//字符串解构赋值

        let str="123456";
        let [a,b,c,d,e,f,g=50]=str;
        console.log(a,b,c,d,e,f,g)
扩展运算符
  • 扩展运算符用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值
    操作数组操作对象(自变量对象ps:兼容问题)

 //展开数组 
    let arr=[1,2,3]
    let arr2=arr;
   // console.log(arr2);
   document.write(arr2)  //1,2,3
   let arr3=[...arr]   //也可以看做是拷贝
   console.log(arr3)//( 3) [1 2 3]
   //展开对象

let obj={
    name:"zhangsan",
    age:19,
}
let obj1={
    ...obj,
    sex:"man"
}
console.log(obj1)  //报错 现在浏览器不支持但是方法确实可行可以采用babel编译一下使用

//展开函数
function myFunction(x, y, z) {
    console.log(x,y,z)//0 1 2
 }
var args = [0, 1, 2];
myFunction(...args);


function myFunc(a, b, ...rest) {
    console.log(rest.length);//3
}

myFunc(1,2,3,4,5); // => 3

function myFunction(x, y, z,...l) {
    console.log(x,y,z,l)//0 1 2
 }
var args = [0, 1, 2,4,5,6];//0 1 2 (3) [4,5,6]
myFunction(...args);
//数组 与 扩展运算符结合
let c = ["abc",11,12]
let a = [1, 3, 4, 5,c],
    b = [...a, 6, 7, 8, 9]
  // b=a;
console.log(b)//(8) [1,2,3,4,5,6,7,8,9];
箭头函数=>
  • ES6允许使用“箭头”(=>)定义函数

var f = v => v

上边的函数可以书写为

var f = function(v) {
  return v;
};

如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

var f = () => 5;
// 等同于
var f = function () { return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
};

如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

var sum = (num1, num2) => { return num1 + num2; }

由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号。

var getTempItem = id => ({ id: id, name: "Temp" });

箭头函数可以与变量解构结合使用。

const full = ({ first, last }) => first + ' ' + last;

// 等同于
function full(person) {
  return person.first + ' ' + person.last;
}
默认参数,剩余参数,扩展参数

参数的默认参数,剩余参数,拓展参数

//默认参数
         let sayHello=(name,age=25)=>{
             let str=`my name's ${name},age's ${age} old`
            //console.log(name,age)
            console.log(str)//my name's chenxu,age's 25 old
        }
        sayHello("chenxu")

        //扩展参数
        let sum=(a,b,c)=>{
            console.log(a,b,c)
        } 
        let arr=[4,5]          //扩展
        sum(1,...arr)


        //剩余参数
        let sum1=(a,b,...c)=>{
            console.log(c);
            console.log(a,b)

> 引用文字

;  //剩余
        }
        sum1(1,2,3,4,5,7,9)
*/
        let sum2=(a,b,...c)=>{
            console.log(c);
            var result=c.reduce((a,b)=>a+b);
            console.log(result);
            console.log(a,b);
        }
        sum2(1,2,3,4,5,7,9)

http://www.niftyadmin.cn/n/4544286.html

相关文章

java实现排序(3)-希尔排序

引言 希尔排序也是经典的排序算法之一&#xff0c;其实本质上还是插入排序&#xff0c;不过它对插入排序做了进一步的优化。在本篇博文中会详细介绍希尔排序&#xff0c;讨论算法性能&#xff0c;用代码实现希尔排序并解释为什么它相对于插入排序有了进一步的优化。笔者目前整…

获取当前时间作为文件名

2019独角兽企业重金招聘Python工程师标准>>> 昨天用到建文件时区文件名的问题&#xff0c;我用的是获取当前时间转换为字符串命名的&#xff0c;这里做了下简单总结&#xff1a; 1.String curTime new SimpleDateFormat("yyyyMMddHHmmssSSS") .format(ne…

java中不太常见的东西(4) - Fork/Join

引言 《java中不太常见的东西》这个模块已经好久没写了&#xff0c;今天写一个java中自带的分布式处理方式Fork/Join。Fork/Join在JDK1.7的时候引入&#xff0c;它某种程度上可以实现简单的map-reduce操作。笔者目前整理的一些blog针对面试都是超高频出现的。大家可以点击链接…

java中不太常见的东西(5) - 注解

引言 在日常的开发过程中&#xff0c;其实每个人都用到了注解&#xff0c;最常见的就是重写Override。既然这么常见为什么还要放入不常见的模块中呢&#xff1f;在本篇博文中会详细介绍关于注解的概念和各个组成部分&#xff0c;同时会写出一个demo来说明自定义注解使用的一种…

python中关于操作时间的方法(二):使用datetime模块

使用datetime模块来获取当前的日期和时间 1 import datetime 2 idatetime.datetime.now() 3 print ("当前的日期和时间是%s"%i) 使用datetime模块来获取当前的年份 1 import datetime 2 idatetime.datetime.now() 3 print ("当前的年份是%s" %i.year) 使用…

为什么互联网行业需要Ping32盗版软件检测?

随着互联网的发展&#xff0c;软件作为互联网生态系统不可或缺的一环&#xff0c;被广泛应用于生产、生活、娱乐等各个领域。然而&#xff0c;很多软件公司为了保护自己的版权收益和知识产权&#xff0c;会采用授权方式进行软件销售和分发&#xff0c;但是授权方式难以避免软件…

java实现(3)-堆

引言 堆&#xff0c;我们一般作为二叉堆的一种总称&#xff0c;它是建立在二叉树之上的。在本篇博文中&#xff0c;会详细介绍堆的结构和原理&#xff0c;以至于写出堆的实现。在代码实现中我们主要是针对于插入和删除做一些操作&#xff0c;在删除中我们只考虑删除最小的&…

集体智慧编程--第3章 发现群组

监督学习和非监督学习 利用样本输入和期望输出来学习如何预测的技术称为监督学习。非监督学习的目标是采集数据&#xff0c;然后从中找出不同的群组。 单词向量 为聚类算法准备数据的常见做法是定义一组公共的数值型属性&#xff0c;我们可以利用这些属性对数据项进行比较。 对…