摘要:的副作用通過聲明的變量不能。需要注意的是中通過和聲明的變量是不存在變量提升情況的。第二個階段是代碼執行,函數表達式和不合格的標識符為聲明的變量被創建。為了避免矛盾和意外的結果,總是指定基數參數第二個參數。
變量 最小全局變量
每個JavaScript環境有一個全局對象,瀏覽器中就是window對象,Node環境中是global對象,在函數外面,this指向window對象,不管是通過var 聲明或者直接創建的變量,都是這個全局對象的屬性。在函數內部通過var聲明的變量只會成為一個函數內部局部變量,直接創建的對象還是會成為全局對象的屬性。
this指向調用改函數的對象 var myglobal = "hello"; // 不推薦寫法 console.log(this); // window console.log(myglobal); // "hello" console.log(window.myglobal); // "hello" console.log(window["myglobal"]); // "hello" console.log(this.myglobal); // "hello" (function (){ var mylocal= "world"; myglobal1 = "!!"; console.log(this); //window console.log(mylocal); //"world" console.log(window.mylocal); //undefined console.log(this.indow.mylocal); //undefined console.log(window.myglobal1); //"!!" console.log(myglobal1); //"!!" }());
需要注意的地方:
創建隱式全局變量 var a = b = 0; 賦值運算從右到左,在此情況下好比var a = (b = 0),b是未聲明的。
var的副作用
通過var 聲明的變量不能delete。
JavaScript中,你可以在函數的任何位置聲明多個var語句,并且它們就好像是在函數頂部聲明一樣(變量提升)發揮作用。需要注意的是ES6中通過let和const聲明的變量是不存在變量提升情況的。
// 例子 myname = "global"; // 全局變量 function func() { alert(myname); // "undefined" var myname = "local"; alert(myname); // "local" } func(); myname = "global"; // global variable function func() { var myname; // 等同于 -> var myname = undefined; alert(myname); // "undefined" myname = "local"; alert(myname); // "local"} func();
代碼處理分兩個階段,第一階段是變量,函數聲明,以及正常格式的參數創建,這是一個解析和進入上下文的階段。第二個階段是代碼執行,函數表達式和不合格的標識符(為聲明的變量)被創建。變量,函數的聲明永遠在代碼處理的第一步,與代碼編寫位置無關。
定義變量
ECMAScript變量是松散類型的,可以保存任何類型的數據。
var message = "hello" ; message = 100; //有效,不推薦
通過var定義局部變量;忽略var會定義全局變量,作為window的屬性;
使用未定義的變量,會報錯,xxx is not defined,對于未定義的變量,只能使用typeof操作符,返回"undefined"。
var message; 等同于 var message = undefined; 非 var message = "undefined";數據類型
5種簡單數據類型
Undefined, Null, Boolean, Number, String
復雜數據類型
Object
Null 類型
null值表示一個空對象指針,如果定義的變量準備在將來用于保存對象,那么最好將該變量初始化為null而不是其他值。這樣只要檢查變量的值是否為null,就可以判斷變量是否判斷一個對象的引用。
console.log( null == undefined); // true console.log( null === undefined); // false obj !=null 可以判斷對象是否為null 或者 為undefined var obj; console.log(obj != null) //false console.log(obj != undefined) //false
使用typeof操作符返回字符串
"undefined" 變量未定義或者聲明定義后未賦值。除了typeof操作符,操作未定義的變量會報錯 "boolean" 變量的值是布爾值 "string" 變量的值是字符串 "number" 變量的值是數值 "object" 變量的值是對象或null "function" 變量的值是函數數據類型轉換
隱式類型轉換
Number 類型
如果小數點后面沒有跟任何數字,或者浮點數值本身就是一個整數,那么該浮點數會被轉換為整數。保存浮點數所需的內存空間是整數的兩倍,如果可能,ECMAScript會不失時機地將浮點數轉化為整數。
var floatNum1 = 1.; // 解析為1 var floatNum2 = 10.0; // 解析為10
基于IEEE754數值的浮點計算會產生舍入誤差,不要測試某個特定的浮點數值。
console.log(0.1 + 0.2 == 0.3); // false
非數值轉換為數值
Number();
parseInt(); 指定基數
parseFloat(); 只解析十進制值,沒有第二個參數指定基數
+;
console.log(+"5"); //5 console.log(+"5.5"); //5.5 console.log(+"5w"); //NaN console.log(+"ww"); //NaN console.log(parseInt("5",10)); // 5 console.log(parseInt("5.5",10)); //5 console.log(parseInt("5w",10)); //5 console.log(parseInt("ww",10)); //NaN var month = "06", year = "09"; console.log(parseInt(month)); //6 console.log(parseInt(month, 10)); //6 console.log(parseInt(year)); //0 console.log(parseInt(year, 10)); //9
parseInt()可以從字符串中獲取數值。當字符串以”0″開頭的時候就有可能會出問題,開頭為”0″的字符串會被當做8進制處理。為了避免矛盾和意外的結果,總是指定基數(radix)參數---第二個參數。
+"08" // 結果是 8 +"08netease" //NaN Number("08") // 8 Number("08netease") //NaN parseInt("08netease", 10) //8 parseInt(arg0, arg1)較慢
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86061.html
摘要:一棧數據結構與不同,中并沒有嚴格意義上區分棧內存與堆內存。引用數據類型的值是保存在堆內存中的對象。不允許直接訪問堆內存中的位置,因此我們不能直接操作對象的堆內存空間。為了更好的搞懂變量對象與堆內存,我們可以結合以下例子與圖解進行理解。 showImg(https://segmentfault.com/img/remote/1460000009784102?w=1240&h=683); ...
摘要:函數式編程最后介紹一下函數式編程。函數式編程是一種歷史悠久,而又在最近頗為熱門的話題。函數式編程在面向對象一詞誕生以前就已經存在,不過它在很長一段時間里都被隱藏于過程式編程面向對象也是過程式編程的一種的概念之下。 2.1 JavaScript特點 總結以下幾個特點: 解釋型語言 類似與C和Java的語法結構 動態語言 基于原型的面向對象 字面量的表現能力 函數式編程 解釋型語言:...
摘要:用和包裹的內容,稱為字符串。關系運算符用于進行比較的運算符。強制依賴于,非強制依賴于。使用場合全局環境構造函數對象的方法閉包閉包是指有權訪問另一個函數作用域中的變量的函數。所有全局對象函數以及變量均自動成為對象的成員。 1 什么是JavaScript JavaScript一種直譯式腳本語言,一種基于對象和事件驅動并具有安全性的客戶端腳本語言;也是一種廣泛應用客戶端web開發的腳本語言。...
摘要:隱式轉換數字字符串數字轉換為字符串數字布爾值轉換為,轉換為字符串布爾值布爾值轉換為或布爾值布爾值和表示一種未知狀態,聲明了但沒有初始化的變量,變量的值時一個未知狀態。 Javascript基礎 簡介 JavaScript,一種直譯式腳本語言,是一種動態類型、基于原型的語言,內置支持類別。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTM...
摘要:第十六天筆記基礎語法區分大小寫是一種區分大小寫的語言的關鍵字變量名函數名以及任何其他的標識符必須適應一致的大小寫形勢臥龍前端空格和換行并不是的語法內容可有可無建議使用將代碼書寫的更加整潔美觀更有可讀性可選的分號分號可選項語法并不是強制要 第十六天筆記 JavaScript 基礎語法 區分大小寫 JavaScript是一種區分大小寫的語言 JavaScript的關鍵字 變量名 函...
摘要:變量定義變量使用關鍵字變量名變量名可以任意取名,但要遵循命名規則變量必須使用字母下劃線或者美元符開始。語法參數說明在消息對話框中要顯示的文本返回值值。返回值點擊確定按鈕,文本框中的內容將作為函數返回值。 簡述 本系列將持續更新Javascript基礎部分的知識,誰都想掌握高端大氣的技術,但是我覺得沒有一個扎實的基礎,我認為一切高階技術對我來講都是過眼云煙,要成為一名及格的前端工程師,必...
閱讀 5081·2023-04-25 19:30
閱讀 2173·2023-04-25 15:09
閱讀 2618·2021-11-16 11:45
閱讀 2171·2021-11-15 18:07
閱讀 1458·2021-11-11 17:22
閱讀 2115·2021-11-04 16:06
閱讀 3576·2021-10-20 13:47
閱讀 3036·2021-09-22 16:03