//宣告全域变数
var v = 'global'
let l = 'global'
//建立function
var obj={test:function(){return()=>{}}}
arrow=obj.test();
//显示对象属性
console.dir(window);
console.dir(obj.test)
console.dir(arrow);
变数会存在[[scope]]
里面,我们在window object底下看到用var
宣告的变数,但没有看到用let
的
打开全域底下的function:test function
,
看到用let宣告的l
,在[[scope]]
的[0]:script
中
用var
宣告的变数,在[[scope]]
的[1]:global window objecct
中
所以let宣告的全域变数就是存在全域底下function的[[scope]][0]:script
中吗?
倒也不完全正确,因为看arrow function
也可以看到[[scope]][0]:script
也有
现在我们可以说明这个问题了:
在function中找用let宣告的变数的流程:
function
的属性列表找到[[scope]]
[[scope]]
对应到scope chain
列表scope chain
从[0]
往[n]
找变数[0]:script
中找到l
在function中,用window.l,找用let宣告的变数:
let l=5;
console.log(window.l) //undefined
原因:在全域找l属性
,找不到。
因为用let令的全域变数,从来都没有储存在window object
上面过
大家好,我是韦恩,今天是铁人赛的二十六天,让我们来设计extension中的MVVM架构吧! MVV...
!小补充! SQL资料库: 关联式资料库,需在资料库中建立Table,并在Table与Table之间...
从发布第一篇 什麽是 Render 至今,转眼三个多月过去了,说好的更多范例和介绍持续 富奸 拖稿中...
在订单成立以及建立金流部份,因为情境非常多, 因此在制定状态的部份其实也是有很多可以讨论的, 还记得...
大家好! 今天要介绍的是类别函式,就是将前几天的主题全都打包在一起的写法。 那麽油门踩下去吧! 物件...