var _global = typeof window === 'undefined' ? global : window;
關(guān)于global 全局變量的使用押蚤。
使用node換進和web開發(fā)的前端同學(xué)應(yīng)該都大概了解揽碘。
global 是nodejs環(huán)境
window是web換進。以下做兩個具體例子進行分析說明:
對于 null 和undefined 需要進行注意:
【在開發(fā)中我們常常要進行非空判斷劫灶,而?JavaScript?中有兩種特殊數(shù)據(jù)類型:undefined?和?null:
null:Null類型掖桦,表示“空值”,代表一個空對象指針涌穆,使用typeof運算得到 “object”,所以我們可以認為它是一個特殊的對象值宿稀。
undefined:Undefined類型,當(dāng)聲明了一個變量未初始化時赫编,得到的就是undefined奋隶。
】
nodejs環(huán)境:
web環(huán)境
具體代碼如下:
//nodejs 環(huán)境
function testF(testParam) {
? ? console.log('testParam: ', testParam);//undefined
? ? /* 下面的寫法會報錯
? ? //假如一個變量連聲明都沒有聲明嘹吨,這么寫會報錯境氢,需要寫成typeof【because window is not defined】
? ? // if (window) {
? ? //? ? ?console.log('window 存在', window);
? ? // }
? ? ?*/
? ? console.log('global: ', global);
? ? console.log('typeof window: ', typeof window);//undefined
? ? var _global = typeof window === 'undefined' ? global : window;
? ? _global.cc = _global.cc || {};
? ? console.log(cc);//{}
? ? console.log(_global === global)//true
}
testF();
<!DOCTYPE html>
<html lang="en">
? <head>
? ? <meta charset="UTF-8" />
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge" />
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0" />
? ? <title>Document</title>
? </head>
? <body>
? ? <script>
? ? ? function testF(testParam) {
? ? ? ? console.log("testParam: ", testParam); //undefined
? ? ? ? /* 瀏覽器環(huán)境 下面的寫法會報錯
? ? //假如一個變量連聲明都沒有聲明萍聊,這么寫會報錯,需要寫成typeof【because global is not defined】
? ? ? ? if (global) {
? ? ? ? ? ? console.log("global: ", global);
? ? ? ? }
? ? ?*/
? ? ? ? console.log("window 存在", window);
? ? ? ? console.log("typeof window: ", typeof window); //undefined
? ? ? ? var _global = typeof window === "undefined" ? global : window;
? ? ? }
? ? ? testF();
? ? </script>
? </body>
</html>