1 回答

TA貢獻1804條經驗 獲得超2個贊
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:函數聲明不要寫在條件語句中,拿出來
補充:
問題主要原因是chrome和safari對于函數在條件語句中聲明表現不一致導致的。可以用以下代碼驗證
test1()
if (true) {
if (false) {
} else {
function test1() {
console.log('test') // chrome中報錯,safari中打印出`test`
}
}
}
而題主的問題原因是:在safari中 getArrayFromOl函數相當與已經提升到最外層的if之外,而nameSet由于是let聲明,所以作用域在第一個if內,所以getArrayFromOl取不到相應的值
添加回答
舉報