(1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍
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,对象冻结,跨模块常量,新增的全局对象介绍的更多相关文章
- es65 跨模块常量
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- es6中let,const区别与其用法
ECMAScript 是什么? 首先,我们都知道JavaScript由三部分组成:ECMAScript,DOM,BOM: 其中的ECMAScript是Javascript的语法规范. ECMAScri ...
- 理解es6中的const与“不变”
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动. 效果 对于简单类型的数据(数值.字符串.布尔值),值就保存在变量指向的那个内存地址,因此等同于常量. 对于复合类型 ...
- ES6中的const命令【转】
1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught Typ ...
- ES6中的const命令
1.const声明一个只读常量,一旦声明,常量的值就不能改变 1 const PI=3.1415; 2 console.log(PI);//3.1415 3 4 PI=3;//Uncaught T ...
- ES6中的var let const应如何选择
javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...
- 解析.NET对象的跨应用程序域访问(下篇)
转眼就到了元宵节,匆匆忙忙的脚步是我们在为生活奋斗的写照,新的一年,我们应该努力让自己有不一样的生活和追求.生命不息,奋斗不止.在上篇博文中主要介绍了.NET的AppDomain的相关信息,在本篇博文 ...
- NET对象的跨应用程序域
NET对象的跨应用程序域 转眼就到了元宵节,匆匆忙忙的脚步是我们在为生活奋斗的写照,新的一年,我们应该努力让自己有不一样的生活和追求.生命不息,奋斗不止.在上篇博文中主要介绍了.NET的AppDoma ...
- ES6中对数值的扩展
上一节和大家学习了字符串的扩展,这一节轮到了数值,我们一起来学习数值的扩展. 剧透一下,这一节并不会很烧脑,都是介绍类的知识讲解,理解性的东西不多,初学者们也可以愉快地看完. 传统的写法 在介绍数值的 ...
随机推荐
- CentOS Linux 系统 安装oracle 11g
CentOS Linux 系统 安装oracle 11g 在Linux系统上安装oracle是比较麻烦,需要配置各种变量啥的,o(︶︿︶)o ,但是没办法,有些东西你总的去接触,而且接触理解的越早越深 ...
- Luogu P2807 三角形计数
题目背景 三角形计数(triangle) 递推 题目描述 把大三角形的每条边n等分,将对应的等分点连接起来(连接线分别平行于三条边),这样一共会有多少三角形呢?编程来解决这个问题. 输入输出格式 输入 ...
- 一次关于mongodb性能踩坑的总结
发现性能问题 上一次导入数据后,发现系统十分的卡顿,但是才仅仅1000多条数据而已,怎么会让系统变得如何的卡顿呢?于是我开始走在排查系统卡顿的原因的道路上. 首先,先定位问题是出现在前端上还是后端上. ...
- [Java] Java读取Word文档
前言 最近需要做一些NLP 方面的工作,使用的是Java,在此总结一下使用Java读取Word(.doc)格式文件的方法. Apache基金会非常厉害,开源工具包POI就可以处理微软家的文档,甚至包括 ...
- python学习===如何理解python中的return
首先要了解,函数是什么?书上可能会说函数是完成功能的模块之类的话.其实说白了,函数就是个你招来的工人.你给他一些材料,告诉他怎么用这些材料拼装,然后他负责把拼装好的成品交给你.材料就是函数的参数,成品 ...
- python------函数嵌套及作用域链
1.三元运算if条件成立的结果 if 条件 else 条件不成立的结果例如: a=20 b=10 c=a if a>b else b print(c) 2.命名空间 全局命名空间:创建的存储&q ...
- 从源码理解Spring原理,并用代码实现简易Spring框架
前言(本文为原创,转载请注明出处) 个人之前对于框架的学习,就停留在配置,使用阶段.说实话过段时间就会忘得荡然无存.也不知道框架的运行逻辑,就是知道添加个注解,就可以用了. 由于实习,时间比较多,也感 ...
- OpenTK教程-2绘制一个三角形(正确的方法)
上一个教程向我们展示了如何在屏幕上画一个三角形.但是,我说过,那是一种古老的方式,即使它能够正常运行,但是现在这已经不是"正确"的方式.上篇文章中我们将几何发送到GPU的方式是所谓 ...
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'username' not found. Available parameters are [1, 0, param1, param2]
Spring+mybatis错误:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.bi ...
- C#基础 课堂笔记 下
函数 1.认识函数 定义:具有独立功能,并能通过名称重复使用的代码 函数的声明位置 必须在 类 中 函数声明语法 函数声明示例 函数的调用 定义:函数调用就是使用函 ...