对于javascript MDN中let和var范例的认识
程序员文章站
2022-03-31 15:54:53
...
这是javascript MDN的范例
目的是为了说明let作用域的问题。
目的是为了说明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的区别的,他们都是构造函数的私有变量且作用域相同。
以上就是对于javascript MDN中let和var范例的认识的详细内容,更多请关注其它相关文章!
上一篇: js实现input输入框点击变大缩小
下一篇: php配备
推荐阅读
-
了解javascript中let和var及const关键字的区别
-
了解javascript中let和var及const关键字的区别
-
对于javascript MDN中let和var范例的认识
-
JavaScript中let、var和const的区别及应用场景的介绍
-
javascript中var和let/const的区别是什么?
-
Javascript中var与let之间的不同和相同
-
JavaScript中的var和let的区别(代码示例)
-
JavaScript中let、var和const的区别及应用场景的介绍
-
对于javascript MDN中let和var范例的认识
-
javascript中var和let/const的区别是什么?