1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
if (1 === 1) {
let nameSet = new Set();
if (1 === 2) {
// do nothing
} else {
console.log(nameSet)
getArrayFromOl(nameSet)
function getArrayFromOl(nameSet) {
console.log(nameSet)
}
}
}
ps:函數(shù)聲明不要寫在條件語句中,拿出來
補(bǔ)充:
問題主要原因是chrome和safari對于函數(shù)在條件語句中聲明表現(xiàn)不一致導(dǎo)致的??梢杂靡韵麓a驗(yàn)證
test1()
if (true) {
if (false) {
} else {
function test1() {
console.log('test') // chrome中報(bào)錯(cuò),safari中打印出`test`
}
}
}
而題主的問題原因是:在safari中 getArrayFromOl函數(shù)相當(dāng)與已經(jīng)提升到最外層的if之外,而nameSet由于是let聲明,所以作用域在第一個(gè)if內(nèi),所以getArrayFromOl取不到相應(yīng)的值
添加回答
舉報(bào)