日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 奇怪的Symbol的問題

瀏覽:220日期:2023-05-26 10:48:23

問題描述

javascript - 奇怪的Symbol的問題

這是抽出來的兩行代碼 var name = Symbol(’test’) 一直提示 無法轉(zhuǎn)換,是關(guān)鍵字保留?還是其他原因?為什么換一個(gè)var name1 = Symbol(’test’)卻可以通過編譯?其他普通的var s1 s2也可通過編譯。

問題解答

回答1:

這問題挺有意思的,我也從來沒有注意到,翻了翻資料,發(fā)現(xiàn)原來是很多事情巧合的湊合到一塊兒,然后出現(xiàn)了這個(gè)問題。準(zhǔn)確的來說,是瀏覽器的默認(rèn)行為和JavaScript的隱式類型變換搗的鬼。

一點(diǎn)一點(diǎn)來,首先,var和let的區(qū)別在哪里?

var聲明的變量會(huì)被提升至當(dāng)前函數(shù)作用域頂端,如果是在全局那么這個(gè)變量將會(huì)成為window的一個(gè)屬性。 而對(duì)于let聲明的變量,它會(huì)將變量提升至當(dāng)前塊級(jí)作用域,并且如果是在全局,當(dāng)前變量也不會(huì)成為window的屬性。

所以,在全局中會(huì)出現(xiàn)這樣的事情:

var test1 = ’test1’;let test2 = ’test2’;console.log(window.test1); // test1console.log(window.test2); // undefined

然后,name為名的變量和別的變量有什么區(qū)別? 上面我們知道了,var name = ’test1’;實(shí)際上可以等同于window.name = ’test1’,很容易就能想到,name是不是固定的保留字?

翻翻規(guī)范,還真是的。 window.name屬性表示的是當(dāng)前窗口上下文的名稱。下面是window的部分接口:

[ReplaceableNamedProperties] interface Window { // the current browsing context readonly attribute WindowProxy window; readonly attribute WindowProxy self; readonly attribute Document document; attribute DOMString name; //..}

name屬性在這里的最后一行,沒有readonly的前綴,說明它是可讀可寫的,它的數(shù)據(jù)類型則是DOMString。 DOMString是指UTF-16的字符串,在JavaScript中它會(huì)直接映射到String。

所以當(dāng)我們給window.name賦值的時(shí)候,這個(gè)值會(huì)被強(qiáng)制轉(zhuǎn)換為String。

我們可以試試看:

var name = { a:1, b:2 };console.log(window.name); // [object Object]var name = [0, 1, 2, 3];console.log(window.name); // 0,1,2,3

到了這里大概就能猜到,var name = Symbol(’test’);的錯(cuò)誤,應(yīng)該是Symbol變量在做類型轉(zhuǎn)換的時(shí)候出了問題。而實(shí)際報(bào)的錯(cuò)誤也證實(shí)了我們的猜測(cè):TypeError: Cannot convert a Symbol value to a string。

但是,似乎不太對(duì),Symbol變量是可以轉(zhuǎn)換成字符串的啊,比如:

let test = Symbol(’test’);console.log(test.toString()); // Symbol(test)console.log(String(test)); // Symbol(test)

嘛,這就是比較老生常談的東西了,JavaScript的隱式類型變換和顯式的強(qiáng)制轉(zhuǎn)換對(duì)于部分變量是不同的。很不幸,在這里Symbol就是這么一類。

Symbol被隱式的轉(zhuǎn)換時(shí),它會(huì)首先調(diào)用其內(nèi)部的ToPrimitive接口,拿到其原始值,然后在其中再調(diào)用ToString函數(shù)轉(zhuǎn)換為字符串。注意,這里的這個(gè)ToString函數(shù)是其內(nèi)部的抽象方法,和暴露在外的Symbol.prototype.toString()不是一個(gè)東西。

對(duì)于Symbol變量而言,當(dāng)其調(diào)用ToString的時(shí)候就會(huì)報(bào)錯(cuò),更詳細(xì)的我就不展開了,有興趣的可以自己看看規(guī)范:ToString ( argument )。

回答2:

我剛剛也在控制臺(tái)試了一下,確實(shí)是個(gè)很神奇的BUG,不過你將

var name = Symbol('test'); //改成let name = Symbol('test'); //試試。。

然后驚奇的發(fā)現(xiàn)BUG又沒了。。我猜跟瀏覽器是怎么解析語法有關(guān),但這些東西我也不懂啊。

回答3:

name是window的特有屬性,如果你換個(gè)變量試試就不會(huì)報(bào)錯(cuò)了。。。

回答4:

name 是 window 的特有屬性,在全局環(huán)境下定義的name變量,賦任何值都會(huì)自動(dòng)轉(zhuǎn)化成字符串,而Symbol類型不能直接轉(zhuǎn)化為字符串,所以報(bào)錯(cuò)了。

你可以

var name = 1;console.log(name);

就知道了。

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美大黑bbbbbbbbb在线| 夜夜嗨网站十八久久 | 在线亚洲一区| 亚洲激情婷婷| 中文字幕一区二区三区日韩精品| 在线观看视频免费一区二区三区| 亚洲一区二区三区无吗| 亚洲精品自拍| 97se亚洲| 欧美精品91| 成人片免费看| 久久精品亚洲人成影院| 久久久久中文| 免播放器亚洲| 国产精品亚洲二区| 激情黄产视频在线免费观看| 91精品蜜臀一区二区三区在线 | 欧美国产美女| 欧美不卡高清| 涩涩涩久久久成人精品| 国产精品xxxav免费视频| 国产精品高颜值在线观看| 久久蜜桃精品| 亚洲精品黄色| 精品国产三区在线| 不卡在线一区二区| 日韩手机在线| 欧美激情另类| 日韩专区欧美专区| 日韩精品1区2区3区| 精品99在线| 国产亚洲激情| 欧美国产先锋| 国产美女精品| 久久中文字幕一区二区三区| 91高清一区| 国产精品久久久久毛片大屁完整版| 成人精品国产亚洲| 蜜桃av一区| 9999国产精品| 日本vs亚洲vs韩国一区三区二区| 国产传媒在线观看| 91精品国产经典在线观看| 色爱av综合网| 国产精品成人国产| 一区二区三区四区在线观看国产日韩| 久久99国产精品视频| 最新日韩欧美| 捆绑调教日本一区二区三区| 欧美亚洲福利| 免费一区二区视频| 999精品一区| 国产精品一区二区三区www| 欧美va天堂| 欧美国产美女| 国产精品第十页| 亚洲精品乱码久久久久久蜜桃麻豆 | 日韩精品亚洲专区| 成人片免费看| 欧美日韩调教| 久久av一区二区三区| 蜜臀国产一区| 精品视频自拍| 日韩一区二区三免费高清在线观看 | 男人的天堂亚洲一区| 欧美aa在线视频| 蜜桃视频免费观看一区| 成人在线丰满少妇av| 日韩精品免费一区二区夜夜嗨| 久久国产电影| 精品免费在线| 欧美激情视频一区二区三区免费| 日韩中文字幕亚洲一区二区va在线| 中文另类视频| 久久精品一区二区国产| 青草国产精品| 日韩av在线免费观看不卡| 香蕉久久国产| 91久久久久| 欧美福利在线| 国内激情久久| 国户精品久久久久久久久久久不卡| 精品一区二区男人吃奶| 国产欧美激情| 欧美日韩亚洲一区二区三区在线| 午夜宅男久久久| 老鸭窝亚洲一区二区三区| 国产专区一区| 亚洲黄页一区| 亚洲欧洲一区| 欧美日韩精品一本二本三本| 99久久亚洲精品蜜臀| 久久香蕉国产| 五月天激情综合网| 午夜精品婷婷| 国产农村妇女精品一区二区| 亚洲制服少妇| 亚洲区国产区| 欧美视频二区| 国产欧美日韩视频在线| 欧美激情福利| 日韩一区电影| 欧美午夜不卡影院在线观看完整版免费| 久久久久国产精品一区三寸| 亚洲h色精品| 欧美日韩少妇| 色综合视频一区二区三区日韩| 欧美日韩亚洲一区在线观看| 国产精品成人自拍| 都市激情国产精品| 国产综合亚洲精品一区二| 伊人成人在线视频| 亚洲日本欧美| 国产日韩在线观看视频| 久久这里只有精品一区二区| 亚洲女同av| 国产精品女主播一区二区三区| 伊人久久亚洲| 久久99免费视频| 青青久久av| 日本欧洲一区二区| 国产精品白浆| 99久久精品网| 亚洲区国产区| 久久字幕精品一区| 蜜臀国产一区| 香蕉成人久久| 国产精品nxnn| 亚洲va中文在线播放免费| 亚洲特色特黄| 日韩和欧美的一区| 国产成人精品一区二区三区免费| 1024精品一区二区三区| 日韩在线网址| 国产精品久久久久久久免费观看| 久久电影tv| 蜜桃视频一区二区| 国产一区二区三区四区五区 | 欧美日韩xxxx| 久久国产影院| 日韩1区2区日韩1区2区| 美女av在线免费看| 亚洲精品极品| 日韩在线观看| 日韩av午夜在线观看| 蜜桃视频在线网站| 日韩精品一区第一页| 精品伊人久久| 亚洲人成精品久久久| 日韩精品专区| 欧美在线不卡| 在线亚洲欧美| 麻豆视频在线看| 日韩va亚洲va欧美va久久| 国产亚洲一区二区手机在线观看 | 亚洲ab电影| 久久久久久黄| 久久一区国产| 亚洲日本欧美| 国精品一区二区| 久久久久97| 日韩一区精品| 亚洲男女av一区二区| 激情综合五月| 日韩国产欧美在线视频| 国产在线欧美| 久久久久久久欧美精品| 日韩精品免费一区二区三区| 欧美精品三级在线| 欧美在线亚洲| av综合电影网站| 亚洲综合婷婷| 激情婷婷综合| 日韩久久视频| 精品国产美女a久久9999| 亚洲精品第一| 狠狠爱成人网| 99视频精品全国免费| 成人在线免费观看网站| 国产亚洲第一伦理第一区| 久久亚洲图片| 国产一区欧美| 久久中文字幕av| 日韩精品1区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 亚洲午夜一级| 国产精品啊v在线| 欧美日韩亚洲一区二区三区在线| 免费日韩av| 亚洲欧洲一区二区天堂久久| 99精品网站| 黑人精品一区| 黄色在线网站噜噜噜| 国产精品香蕉| 国产精品探花在线观看| 青青草精品视频| 欧美亚洲一区二区三区| 日韩在线一区二区| 亚洲涩涩av| 日本91福利区|