对于javascript MDN 中let 和var范例的认识
来源:互联网 发布:26周四维彩超数据标准 编辑:程序博客网 时间:2024/04/30 13:51
这是javascript MDN的范例
目的是为了说明let作用域的问题。
var SomeConstructor;{ let privateScope = {}; SomeConstructor = function SomeConstructor () { this.someProperty = "foo"; privateScope.hiddenProperty = "bar"; } SomeConstructor.prototype.showPublic = function () { console.log(this.someProperty); // foo } SomeConstructor.prototype.showPrivate = function () { console.log(privateScope.hiddenProperty); // bar }}var myInstance = new SomeConstructor();myInstance.showPublic();myInstance.showPrivate();console.log(privateScope.hiddenProperty); // error
不过通常情况下我们不会这样定义一个构造函数。
所以我改写了下。
function SomeConstructor() { this.someProperty = 'foo'; let privateScope = {}; privateScope.hiddenProperty = 'bar'; SomeConstructor.prototype.showPublic = function () { console.log(this.someProperty); } SomeConstructor.prototype.showPrivate = function () { console.log(privateScope.hiddenProperty); }}var myInstance = new SomeConstructor();myInstance.showPublic();//foomyInstance.showPrivate(); //barconsole.log(privateScope.hiddenProperty); //ReferenceError: privateScope is not defined
可以看到我们无法直接访问 privateScope.hiddenProperty, 如果我们这么改。
var privateScope = {}; // 把let 换成var
则结果变为
console.log(privateScope.hiddenProperty); //ReferenceError: privateScope is not defined
可以看到结果不变。
在构造函数中无论是 var 还是 let 其作用域是相同的,而且都是私有变量。
我们还是用MDN里面的范例,把 let改成 var
var SomeConstructor;{ var privateScope = {}; SomeConstructor = function SomeConstructor () { this.someProperty = "foo"; privateScope.hiddenProperty = "bar"; } SomeConstructor.prototype.showPublic = function () { console.log(this.someProperty); // foo } SomeConstructor.prototype.showPrivate = function () { console.log(privateScope.hiddenProperty); // bar }}var myInstance = new SomeConstructor();myInstance.showPublic();myInstance.showPrivate();console.log(privateScope.hiddenProperty); // bar
则可以看到console.log有结果输出而不是error.
但是一般情况下我们还是用常用的模式去定义一个构造函数。这个范例是为了特地讲let 和 var区别才写出的。所以没有代表性。
在常用的模式之下,是看不出let 和 var的区别的,他们都是构造函数的私有变量且作用域相同。
0 0
- 对于javascript MDN 中let 和var范例的认识
- JavaScript中let和var定义变量的区别
- JavaScript中const、var和let的区别
- ES6对于let和const的认识
- JavaScript的ES6中var、let、const
- JavaScript中const, var, let的区别
- javaScript中var、let、const的区别
- swift中let 和var的区别
- js中let和var 的区别
- js中let和var的区别
- JS中var和let的区别
- JavaScript 之 var 和 let
- JavaScript中const、var和let区别浅析
- javascript中定义变量var,const,let简单的区别
- JavaScript ES6中const、let与var的对比详解
- javascript中var与let与const的区别
- var和let的区别
- let和var的区别
- mybatis实战之路,疯狂的数据库操作框架、动态sql实现CRUD及带条件的增CRUD
- centos7安装npm和nodejs
- 我对并查集的了解及模板
- Android 详细分析AppBarLayout的五种ScrollFlags
- zookeeper的安装与JavaAPI的使用
- 对于javascript MDN 中let 和var范例的认识
- IE/Firefox/Chrome等浏览器保存Cookie的位置
- 准备校招实习,从今天开始写博客
- C-递归的函数
- 论文阅读笔记--Selective Search for Object Recognition
- CF
- 摘:Vue与对比其他框架对比
- centos gcc 升级4.8
- SQL基本编程,分支语句,循环语句,存储过程,触发器