ES6第一部分

Posted web全端小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6第一部分相关的知识,希望对你有一定的参考价值。

1.let声明变量,va声明变量,而const声明的常量

2.let与var的区别

let可以让变量长期驻扎在内存当作

let的作用域是分块的,块内的变量不会覆盖块外的变量值。

{

//(模)块1

let a = 1;

  if(true){

    //(模)块2

    let a = 2;

  }

console.log(a); //1,因为块内的变量不会覆盖块外的变量值

}

let与var:同一个代码块里面不能出现变量重复声明

3.const声明常量,常量的值一旦声明就整体就不能被改变,如果一个空数组或者json的话还是可以网他们里面添加成员,但可以通过【彻底冻结函数】来禁止添加成语。
const的作用域也是分块的,const与let共同点:同一个代码块里面不能出现变量重复声明
const PI = 3.1415926; //声明常量
const对象声明后可以进行属性附值操作,但是不能重新对整个对象赋值操作【例如const json = {},json={name:‘hao123‘}】。

4.const对象冻结

//冻结1
const person = Object.freeze();//冻结
person.name = "zhangsan";
person.age = 30;
console.log(person.age);//30

//冻结2
const person = Object.freeze({});//冻结
person.name = "zhangsan";
person.age = 30;
console.log(person.age); //undefined

//冻结3
const person = Ojbect.freeze({//冻结
    name:"张三",
    age:30;
});
console.log(person.age);//30

5.forEach用法

/**
 * forEach的用法,遍历一个对象
 * forEach(testfun[,thisobj]);
 */
var arr = [1,2,3,4];

//写法1
arr.forEach(t1,arr);
function t1(arg) {
    alert(arg);
}

//写法2
arr.forEach(function (e) {
    alert(e);
});

6.彻底冻结对象的函数

/**
 * 利用forEach来实现ES6彻底冻结对象的函数
 * @param  {[type]} obj [description]
 * @return {[type]}     [description]
 */
/*ES6写法*/
var constantize = (obj) => {
    Object.freeze(obj);
    Object.keys(obj).forEach( (key,value) => {
        if( typeof obj[key] === ‘object‘ ) {
            constantize( obj[key] );
        }
    });
};
/*ES5写法*/
var contantize = function (obj) {
    Object.freeze(obj);
    Object.keys(obj).forEach(function (key,value) {
        if( typeof obj[key] === ‘object‘ ) {
            constantize ( obj[key] );
        }
    });
}

7.跨模块常量的使用

//module.js文件的代码
export const myjson = {
    varInt: 100,
    varFloat: 11.02,
    varString: ‘abc‘
}


//use.js
import * as myjson form ‘./module‘; //导入module.js内接口对象myjson的去不成语
console.log(myjson.varInt);  //100
console.log(myjson.varFloat); //11.02
console.log(myjson.varString); //‘abc‘

//otherUse.js
import {myjson.varInt,myjson.varFloat} as myjson form ‘./module‘;
console.log(myjson.varInt);
console.log(myjson.varFloat);

//onlyInt.js
import myjson.varInt as myjson form ‘./module‘;
console.log( myjson.varInt );

 8.全局对象属性

全局对象属性,在浏览器环境指的是window对象,而Node.js指的是global对象。
在javascript语言中,所有的全局对象,所有的全局变量都是全局对象属性。如果var与function命令声明的变量是全局变量那么就属于全局对象属性。

var myName = ‘jewave‘;

console.log(window.myName);//浏览器环境下的全局变量
console.log(global.myName);//Node环境下的全局变量
console.log(this.myName);//通用环境下的全局变量

let herName = "hong";
console.log(window.herName); //undefined

 

以上是关于ES6第一部分的主要内容,如果未能解决你的问题,请参考以下文章

PTA乙级 (1049 数列的片段和 (20分))

ES6 学习体会

简明 ES6 模块

30秒就能看懂的JavaScript 代码片段

变量提升问题笔记

vue2.0 代码功能片段