摘要:嚴(yán)格模式是引入的一個(gè)概念。目的是使中的不確定行為得到處理,一些不安全的行為也會(huì)拋出錯(cuò)誤。它的支持版本比較高,標(biāo)識(shí)符就是函數(shù)變量屬性的名字。函數(shù)只能用于函數(shù)中,立即退出函數(shù)并返回值。
前言:剛畢業(yè)的應(yīng)屆生,學(xué)習(xí)前端時(shí)間并不長(zhǎng),昨天參加面試,一輪筆試,兩輪技術(shù)面試。尤其在技術(shù)面試的時(shí)候感覺(jué)到自己基礎(chǔ)知識(shí)還是搞的有些亂,也突然明白到了一個(gè)扎實(shí)的Js基礎(chǔ)對(duì)于之后的路是有多重要。準(zhǔn)備把Js高級(jí)程序設(shè)計(jì)的重點(diǎn)知識(shí)從頭梳理一遍。特此記錄一下自己學(xué)習(xí)的一些自認(rèn)為比較重要的筆記??此谱铍y走的路,可能卻是最快也是最穩(wěn)的。1.嚴(yán)格模式
是ECMAScript5引入的一個(gè)概念。目的是使Ecma3中的不確定行為得到處理,一些不安全的行為也會(huì)拋出錯(cuò)誤。它的支持版本比較高,IE10+2.標(biāo)識(shí)符
就是函數(shù)、變量、屬性的名字。標(biāo)識(shí)符不能用保留字和關(guān)鍵字,使用關(guān)鍵字會(huì)導(dǎo)致identitierExpected錯(cuò)誤,保留字看特定引擎報(bào)錯(cuò)3.變量
Js變量是松散類型的,可以用來(lái)保存任何類型的數(shù)據(jù)。
如果變量定義在函數(shù)中,那么這個(gè)變量在函數(shù)退出后就會(huì)被銷毀。
e.g.
function test() { var msg = "hi"; } console.log(msg) // 報(bào)錯(cuò)
檢查一個(gè)錯(cuò)誤:
報(bào)錯(cuò)message未定義,為什么呢?
答:因?yàn)闆](méi)執(zhí)行啊
ECMA中一共有5種簡(jiǎn)單數(shù)據(jù)類型(基本數(shù)據(jù)類型)數(shù)據(jù)類型:undefined null boolean string number,1種復(fù)雜數(shù)據(jù)類型:Object
Null : 就記住他叫空對(duì)象指針就行,所以typeof 是 Object。在定義一個(gè)暫時(shí)不用的對(duì)象變量時(shí)候,最好將這個(gè)變量賦值為null,體現(xiàn)出了它的概念特性,也區(qū)分了它和undefined的不同。
Boolean:if這種流控制語(yǔ)句,會(huì)自動(dòng)將括號(hào)里的內(nèi)容進(jìn)行Boolean()操作
Number: NAN 表示應(yīng)該返回?cái)?shù)值的操作最后沒(méi)有返回?cái)?shù)值,比如說(shuō)2/"i",2/0不是NAN,是Infinity。第二點(diǎn):NAN與任何值都不相等, 包括NAN。有一個(gè)函數(shù)isNaN(),這個(gè)函數(shù)的具體思路為:先看能不能轉(zhuǎn)化成數(shù)值(10,"10",Boolean),如果能則返回flase,不能的話返回true。理解number和parseInt的區(qū)別:parseInt("")是NAN,而Number是0;parseInt遇上非數(shù)字字符會(huì)停止,而Number直接NAN,比如小數(shù)點(diǎn);
String:數(shù)值,布爾值,對(duì)象,和字符串都有toString()方法。只有number下的toString方法有第二個(gè)參數(shù),表示轉(zhuǎn)化成幾進(jìn)制后的值,其實(shí)有個(gè)String()方法更好一些,如果是null返回null,如果是undefined返回undefined,如果不是這兩個(gè)將默認(rèn)使用toString()方法;另外一個(gè)小技巧,把某個(gè)值轉(zhuǎn)化為字符串直接用+""就可以了
Object:Object每個(gè)實(shí)例都存在一些屬性和方法:constructor,hasOwnproperty,toString …
5.操作符
一元操作符(++,--,+,-)
如果對(duì)于字符串進(jìn)行操作,會(huì)返回NAN
s1 = +s1 ->相當(dāng)于把s1轉(zhuǎn)化成數(shù)值型(前提看s1之前是什么類型,規(guī)則不同)
s1 = -s1 ->相當(dāng)于把s1轉(zhuǎn)化成數(shù)值的同時(shí)變成了負(fù)值
位操作符
按位非(~)
var num1 = 25;
var num2 = ~num1
按位或(|)
按位與(&)
按位異或(^)
邏輯操作符:邏輯操作符都是短路操作,如果第一個(gè)操作能決定結(jié)果,就不執(zhí)行第二個(gè)操作
加減法操作符
注意以下問(wèn)題:"a:"+1+2 //應(yīng)該輸出a12而不是a3
var result1 = 5 - "true" //4
Var result2 = NaN -1 //NaN
Var result3 = 3 - "" // 3
Var result4 = 3 - "2" // 1
關(guān)系操作符:
如果在關(guān)系操作符比較中,有一個(gè)值是數(shù)值,那么另一個(gè)值也會(huì)被強(qiáng)制轉(zhuǎn)換成數(shù)值,如:
Var result = ‘23’ < 3 //true var result = ’23’ < ‘3’ //false
任何操作數(shù)與NaN比較都是false
Var result1 = NaN < 3 //false
Var result2 = NaN >= 3 //false
相等操作符
==和!=是先進(jìn)行轉(zhuǎn)換再比較
===和!==是不轉(zhuǎn)換直接進(jìn)行比較
所以由于相等(== !=)存在數(shù)據(jù)類型的轉(zhuǎn)換問(wèn)題,為了保持代碼類型的嚴(yán)謹(jǐn)性最好用 ===,還有一個(gè)細(xì)節(jié),如果用相等符號(hào)進(jìn)行比較,雖然比較的過(guò)程中可能會(huì)進(jìn)行類型的轉(zhuǎn)換,但不影響最終的變量類型e.g:
var strEg = "1"; if(strEg == 1){ console.log(typeof strEg) // string } console.log(typeof strEg) // string6.語(yǔ)句
1.label,continue和break
break是立即退出當(dāng)前層的循環(huán),continue是重新開(kāi)始下一層的循環(huán),開(kāi)始下一層的循環(huán),例子
var num = 0; for(var i=0;i<10;i++) { for(var j=0;j<10;j++) { if(i == 5 && j == 5) { break; //TODO:95 // continue; //99 } num ++ } }
label和continue,break連用,可以起到在那層退出(break)或在那層強(qiáng)制執(zhí)行下次循環(huán)(continute)作用,例如
var num = 0; Outermost: for(var i=0;i<10;i++) { for(var j=0;j<10;j++) { if(i == 5 && j == 5) { break Outermost; } num ++ // 55 } } var num = 0; Outermost: for(var i=0;i<10;i++) { for(var j=0;j<10;j++) { if(i == 5 && j == 5) { continue Outermost; } num ++ // 95 } }
2.with語(yǔ)句
會(huì)導(dǎo)致性能下降,一般不用。為什么不能直接用對(duì)象代替呢?
3.switch語(yǔ)句
switch語(yǔ)句中的條件判斷是全等操作,沒(méi)有類型轉(zhuǎn)換的操作。
7.函數(shù)1.Return:只能用于函數(shù)中,立即退出函數(shù)并返回值。不能用在if,for的代碼塊中。如果return的值為空,則立即停止執(zhí)行函數(shù),并返回undefined
2.傳遞的參數(shù)和arguments并不是同一個(gè)內(nèi)存空間,只是他們的值是同步的,同時(shí)argument的長(zhǎng)度是由執(zhí)行時(shí)傳入的參數(shù)決定的,而不是定義時(shí)決定的。
3.沒(méi)有重載
這篇只是一些簡(jiǎn)單的基礎(chǔ)知識(shí)點(diǎn),之后會(huì)把這些細(xì)小知識(shí)點(diǎn)分別展開(kāi)寫(xiě)成文章
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96482.html
JavaScript 中的數(shù)據(jù)類型 JavaScript 有 5 種簡(jiǎn)單數(shù)據(jù)類型:Undefined、Null、Boolean、Number、String 和 1 種復(fù)雜數(shù)據(jù)類型 Object 。 基本類型(值類型) Undefined Null Boolean Number String 復(fù)雜類型(引用類型) Object Array Date RegExp Function 基本包裝類...
摘要:解析首先簡(jiǎn)稱是由歐洲計(jì)算機(jī)制造商協(xié)會(huì)制定的標(biāo)準(zhǔn)化腳本程序設(shè)計(jì)語(yǔ)言。級(jí)在年月份成為的提議,由核心與兩個(gè)模塊組成。通過(guò)引入統(tǒng)一方式載入和保存文檔和文檔驗(yàn)證方法對(duì)進(jìn)行進(jìn)一步擴(kuò)展。其中表示的標(biāo)記位正好是低三位都是。但提案被拒絕了。 JS高級(jí)入門教程 目錄 本文章定位及介紹 JavaScript與ECMAScript的關(guān)系 DOM的本質(zhì)及DOM級(jí)介紹 JS代碼特性 基本類型與引用類型 JS的垃...
摘要:一數(shù)據(jù)類型基本類型引用類型類型判斷返回結(jié)果未定義布爾值字符串?dāng)?shù)值對(duì)象或者函數(shù)拓展堆棧兩種數(shù)據(jù)結(jié)構(gòu)堆隊(duì)列優(yōu)先,先進(jìn)先出由操作系統(tǒng)自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。 一、數(shù)據(jù)類型 基本類型:`Null Boolean String Undefined Number(NB SUN)` 引用類型:`Array Function Object` 類型判斷:typeof 返回結(jié)果...
摘要:異步本質(zhì)上應(yīng)該就是多線程語(yǔ)言的產(chǎn)物。如果是多線程的異步,假死的應(yīng)該是運(yùn)行方法的線程,而方法仍然會(huì)按預(yù)期打印出。當(dāng)然了,按我個(gè)人的理解,應(yīng)該說(shuō)是是的回調(diào)函數(shù)。 引子 每個(gè)故事都有由來(lái)。前兩天在看 gulp 的時(shí)候,看到了它有個(gè) promise 的玩意兒,然后的然后,這兩天就掉進(jìn)了 javascript 的異步和回調(diào)的坑里面去了。 其間搜索了 javascript promise,看到了...
摘要:舉個(gè)例子在上面的例子可以看到,我們聲明是一個(gè)數(shù)字,但是我們?cè)谥髮⒌闹涤指某闪俗址筒紶栔岛竺鏁?huì)講這些類型?;绢愋妥址硎疽粋€(gè)字符串,如。因此,我們可以寫(xiě)一個(gè)函數(shù),用來(lái)精確檢測(cè)類型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定義 1. 什么是數(shù)據(jù)類型? 數(shù)據(jù)類型,就是將...
閱讀 885·2021-11-15 11:37
閱讀 3623·2021-11-11 16:55
閱讀 3287·2021-11-11 11:01
閱讀 1010·2019-08-30 15:43
閱讀 2758·2019-08-30 14:12
閱讀 696·2019-08-30 12:58
閱讀 3400·2019-08-29 15:19
閱讀 2042·2019-08-29 13:59