av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

javascript - 看到函數聲明這塊有個函數不是很理解

瀏覽:133日期:2023-04-09 15:12:40

問題描述

這是js高程上面的一個例子看到函數聲明有一個代碼

if(condition){ function sayHi(){alert(’hi’) }}else{ function sayHi(){alert(’Yo’) }}

說是這段代碼無效語法,大多數瀏覽器會返回第二個聲明,firefox會返回第一個聲明,這是為什么?如果改成函數表達式形式的就可以了,這又是為什么?

var sayHi;if(condition){ sayHi=function(){alert(’Hi’) }}else{ sayHi=function(){alert(’Yo!’) }}

問題解答

回答1:

因為第一個是函數聲明, 但是一般不會放在if-else中聲明函數

第二個是把匿名函數賦值給變量 ,不存在提升之類的

回答2:

直接寫function xxx(){} 會導致聲明提前,如果有兩個同名的這樣的函數,相當于在頂部執行了兩次var xxx,所以無效

回答3:

和什么聲明前置沒有關系,高程第三部那時候JavaScript規范還都是ES5,瀏覽器還沒有實現塊級作用域(ES2016+),作用域級別只是函數級別的。所以你寫的

if(condition){ function sayHi(){alert(’hi’) }}else{ function sayHi(){alert(’Yo’) }}

和寫的

function sayHi(){ alert(’hi’)}function sayHi(){ alert(’Yo’)}

沒有本質區別

回答4:

js是有聲明提前的!?。unction會在聲明時直接提到作用域頂端。if中不存在作用域,所以兩個function是一個作用域,第二個會替掉第一個。! 而你第二段代碼,先聲明了變量sayhi,在if判斷后才對sayhi進行賦值,

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 少妇高潮露脸国语对白 | 久久小视频| 香蕉在线观看 | 国产毛片一级 | 日本一级淫片 | 婷婷激情综合 | a一级黄色片 | www精品 | 欧美激情视频一区二区三区 | 91久久综合亚洲鲁鲁五月天 | 黄视频在线播放 | 99精品久久久久久中文字幕 | 国产自产21区 | 国产精品二 | 日韩精品在线播放 | 亚洲无人区一线二线三线 | 亚洲视频在线视频 | 成人免费视频国产免费麻豆 | 一区二区三区视频 | 交换多p群乱高h文 | 性色av浪潮av | 小视频黄色 | 亚洲黄色片| 97国产精品人人爽人人做 | 亚洲精品视频免费观看 | 精品一二三 | 欧美一区二区三区在线视频 | av免费观看在线 | 黄网在线免费观看 | 亚洲高清在线观看 | 中国农村毛片免费播放 | av三级在线观看 | 亚洲欧美精品 | 69精品视频 | 日韩精品免费 | 一区二区三区国产视频 | 日本免费在线 | 欧美日韩在线不卡 | 亚洲欧美日韩国产精品 | 久久精品欧美一区 | 伊人影院久久 |