国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

javascript - 關(guān)于具名的IIFE內(nèi)部對(duì)函數(shù)自身再賦值問(wèn)題?

瀏覽:83日期:2023-09-09 09:30:01

問(wèn)題描述

+function foo(){foo=10;//我的問(wèn)題代碼 console.log(foo);//方法自己}();console.log(typeof foo);//undefined 觀察是否全局污染

我想問(wèn) 函數(shù)foo內(nèi)部對(duì)foo再賦值的這個(gè)10去哪了,還有同名函數(shù)foo是如何阻止全局污染的,求解求擴(kuò)展

問(wèn)題解答

回答1:

題主能問(wèn)這個(gè),可以的.不過(guò)這題能通過(guò)自己實(shí)踐解決掉...

首先題主對(duì)于IIFE的寫(xiě)法沒(méi)問(wèn)題,IIFE的寫(xiě)法好多,常見(jiàn)的就是@ewind說(shuō)的這個(gè)和:

(function(){}())

還有不常見(jiàn)的:

!function(){ /* code */ }();~function(){ /* code */ }();-function(){ /* code */ }();+function(){ /* code */ }();

然后再說(shuō)代碼:在函數(shù)里給當(dāng)前函數(shù)名賦值時(shí):foo = 10; 無(wú)效.(贊同@ewind,這里會(huì)忽略,應(yīng)該有更合理的說(shuō)法.)JS解析器會(huì)忽略掉它.我在Chrome控制臺(tái)執(zhí)行的結(jié)果是:

function foo(){ foo=10;//我的問(wèn)題代碼 console.log(foo);//方法自己}undefined// 上面typeof foo的結(jié)果

這就證明了上面我說(shuō)的忽略.然后因?yàn)镮IFE模擬了塊作用域,外部環(huán)境訪問(wèn)不了內(nèi)部的變量.所以就是undefined.

@ewind說(shuō)因?yàn)閒oo是匿名函數(shù)然后怎樣怎樣.明顯概念搞混了.foo函數(shù)并不是匿名函數(shù).

function [name]([param] [, param] [..., param]) { statements }name函數(shù)名,可以省略。當(dāng)省略函數(shù)名的時(shí)候,該函數(shù)就成為了匿名函數(shù)。

MDN

回答2:

首先,貼出的代碼是不完整的。完整版應(yīng)該是這樣

(function foo(){ foo = 10 console.log(foo) // [Function: foo]})();console.log(typeof foo) // undefined

這確實(shí)看起來(lái)比較反直覺(jué),因?yàn)闆](méi)有采用 var 聲明的 foo 并沒(méi)有污染全局作用域。

但如果函數(shù)內(nèi)聲明的變量名不是 foo,就很符合直覺(jué)了,如下:

var bar = 1;(function foo(){ bar = 10})();console.log(typeof foo) // undefinedconsole.log(bar) // 10

所以為什么函數(shù)內(nèi)聲明的變量和函數(shù)名同名時(shí),會(huì)發(fā)生問(wèn)題呢?可以看這個(gè)示例:

(function foo(){ console.log(foo) // [Function: foo] console.log(arguments.callee) // [Function: foo] console.log(foo === arguments.callee) // true})();

在立即執(zhí)行的函數(shù)帶有 foo 這一函數(shù)名后,調(diào)用時(shí)的 arguments.callee 其實(shí)就是對(duì) foo 的引用了。比較二者可以發(fā)現(xiàn)此時(shí) foo 就是函數(shù)對(duì)象。此時(shí)賦值操作并不能生效,遇到未加 var 聲明的 foo 變量時(shí),解釋器查找到的也是這個(gè)函數(shù)對(duì)象,從而不會(huì)在全局作用域下產(chǎn)生污染。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品久久久午夜伊人 | 亚洲精品午夜国产va久久成人 | 日本成人在线看 | 欧美日韩亚洲第一页 | 亚洲 欧美 视频 | 一级毛片情侣 | 国产精品免费看久久久 | 日韩18在线观看 | 成人a视频 | 亚洲欧美综合网 | 中国a毛片 | 色天使影院 | 免费看欧美毛片大片免费看 | 一级国产精品一级国产精品片 | 成年网站在线在免费播放 | 香港毛片免费观看 | 高清欧美日本视频免费观看 | 国产欧美专区在线观看 | 91精品国产91热久久久久福利 | 国产精品久久久久久影院 | 最新欧美一级视频 | 日本午夜人成免费视频 | 中日韩精品视频在线观看 | 日韩精品永久免费播放平台 | 久草视频在线观 | 成年女人毛片免费播放人 | 波多野结衣在线播放视频 | 中文字幕精品一区二区精品 | 国产成人影院在线观看 | 国产成在线观看免费视频 | 国产国模福利视频 | 亚洲国产精品一区二区三区久久 | 韩国毛片免费播放 | 高清精品一区二区三区一区 | 国产三级精品久久三级国专区 | 全部免费毛片在线 | 大陆孕妇孕交视频自拍 | 国产成人综合日韩精品无 | 精品一区二区三区免费毛片爱 | 性高湖久久久久久久久aaaaa | 欧美一级片在线观看 |