爲什麼JavaScript變量在一些站點上正確打印,但在其他站點中未被定義?爲什麼JavaScript變量在某些站點上正確打印,但在其他站點中未被定義?
例如,在StackOverflow的網頁我可以這樣做:
let x = 'y';
console.log(x); // Outputs "y".
但在其他一些網站的網頁,就像this Duolingo exercise的console.log
檢查將失敗:
let x = 'y';
console.log(x); // Outputs "Undefined".
從我」至今我讀過的內容與範圍有關。但是,我不清楚什麼類型的範圍,因爲幾乎總是我知道JavaScript中只有2個示波器:全局(文檔向下)和函數(也涵蓋函數的子函數)。
這似乎做第三範圍,窗口(窗口 - 向下),但我不清楚爲什麼我devtool控制檯不會自動覆蓋這個以及,上述文件和功能,在這些像Duolingo這樣的網頁,我遇到了這個問題。
無論如何要聲明變量,我試着把我的變量放在IIFEs中。它沒有幫助,所以我仍然在我遇到這個問題的網站中得到「未定義」的變量。例如:
的StackOverflow:
(()=>{
let x = 'y';
console.log(x);
})(); // Outputs "y".
聽歌練習:
(()=>{
let x = 'y';
console.log(x);
})(); // Outputs "undefined".
爲什麼有的網站輸出未定義的聲明時變量,什麼是最好的方法,你會說,以應付呢?
請在你的回答中解釋爲什麼只有在某些網站而不是其他網站,爲什麼我的IIFE嘗試失敗,如果我使用這個IIFE爲我的變量任意設置一個範圍。
作爲一名JS大一新生,我盡力說出了這個問題。對不起,如果聽起來不準確。
很可能在該站點腳本中有'console.log'的搭配,以防止您使用它。像「控制檯」。日誌=功能(){/ *什麼也不做* /}' – charlietfl
爲什麼會有人這樣做? – fayalikt
也許爲了更難挖掘存儲的數據 – charlietfl