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