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

2.let与var的区别

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

let的作用域是分块【 {快1  {快2 }  }每个大括号表示一个独立的块 】的,块内的变量不会覆盖块外的变量值。

{

//(模)块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);// //冻结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);//

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的全部成员,.js可以省略
console.log(myjson.varInt); //
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对象,而Nodejs指的是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

(1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍的更多相关文章

  1. es65 跨模块常量

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. es6中let,const区别与其用法

    ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScri ...

  3. 理解es6中的const与“不变”

    const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动. 效果 对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 对于复合类型 ...

  4. ES6中的const命令【转】

    1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught Typ ...

  5. ES6中的const命令

      1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught T ...

  6. ES6中的var let const应如何选择

    javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...

  7. 解析.NET对象的跨应用程序域访问(下篇)

    转眼就到了元宵节,匆匆忙忙的脚步是我们在为生活奋斗的写照,新的一年,我们应该努力让自己有不一样的生活和追求.生命不息,奋斗不止.在上篇博文中主要介绍了.NET的AppDomain的相关信息,在本篇博文 ...

  8. NET对象的跨应用程序域

    NET对象的跨应用程序域 转眼就到了元宵节,匆匆忙忙的脚步是我们在为生活奋斗的写照,新的一年,我们应该努力让自己有不一样的生活和追求.生命不息,奋斗不止.在上篇博文中主要介绍了.NET的AppDoma ...

  9. ES6中对数值的扩展

    上一节和大家学习了字符串的扩展,这一节轮到了数值,我们一起来学习数值的扩展. 剧透一下,这一节并不会很烧脑,都是介绍类的知识讲解,理解性的东西不多,初学者们也可以愉快地看完. 传统的写法 在介绍数值的 ...

随机推荐

  1. Java Collection(转载)

    在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对 抽象数据类型操作的API,而这是我们常用的且在数据 ...

  2. iOS 折线图实现

    图表绘制的过程实际上是坐标位置的计算过程,至于画线只要有了position,通过CAShapeLayer+BezierPath很快就可以画出来,这里提供一个绘制折线的demo,贵在思路,有需要的可以参 ...

  3. 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测

    本文结构: 时间序列分析? 什么是ARIMA? ARIMA数学模型? input,output 是什么? 怎么用?-代码实例 常见问题? 时间序列分析? 时间序列,就是按时间顺序排列的,随时间变化的数 ...

  4. Angular 小试牛刀[2]:CI(travie+firebase)

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建 ...

  5. MFC对话框中显示背景图片

    在MFC对话框中显示图片,四个步骤. 1.首先得在VC6.0或者VS2008(其他版本也是一样)中导入GDI文件.(网上下载:) GDI含义是图形设备接口,主要任务是负责系统与绘图程序之间的信息交换, ...

  6. 学习设计模式之MVC、MVP、MVVM

    引言:认真学习了下广义MVC模式下前端怎么写,狭义的MVC其实是有一个变化过程:MVC MVP MVVM,网上看了很多的关于这方面的介绍,以前总是将视图数据逻辑写一个模块,最近尝试分开并用组件式的开发 ...

  7. 浅析Java RTTI 和 反射的概念

    一.概念: RTTI(Run-Time Type Identification,运行时类型识别)的含义就是在运行时识别一个对象的类型,其对应的类是Class对象,怎么理解这个Class对象呢?如果说类 ...

  8. AugularJS1.X不升级到2.X

    面试中提到AugularJS1.X不升级到2.X,而是改用React的原因是,可以利用很多React现成的组件,需要确认下 以及提到了Vue, Weex技术

  9. Linux环境变量配置的三个方法--/etc/profile,~/.bashrc,shell

    [环境配置的原因] 在windows系统下,很多软件的安装都需要设置环境变量,比如安装JAVA JDK.如果不安装环境变量,在非软件安装的目录下运行javac命令,将会报告"找不到文件&qu ...

  10. ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十二节--小结,Bootstrap Table之角色管理

    返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 很多人说ABP不适合高并发大型,有一定的道理,但是我觉得还是可以的,就看架构师的能力了,哈哈,我之前公司就是ABP ...