摘要:嚴格模式是引入的一個概念。目的是使中的不確定行為得到處理,一些不安全的行為也會拋出錯誤。它的支持版本比較高,標識符就是函數變量屬性的名字。函數只能用于函數中,立即退出函數并返回值。
前言:剛畢業的應屆生,學習前端時間并不長,昨天參加面試,一輪筆試,兩輪技術面試。尤其在技術面試的時候感覺到自己基礎知識還是搞的有些亂,也突然明白到了一個扎實的Js基礎對于之后的路是有多重要。準備把Js高級程序設計的重點知識從頭梳理一遍。特此記錄一下自己學習的一些自認為比較重要的筆記。看似最難走的路,可能卻是最快也是最穩的。1.嚴格模式
是ECMAScript5引入的一個概念。目的是使Ecma3中的不確定行為得到處理,一些不安全的行為也會拋出錯誤。它的支持版本比較高,IE10+2.標識符
就是函數、變量、屬性的名字。標識符不能用保留字和關鍵字,使用關鍵字會導致identitierExpected錯誤,保留字看特定引擎報錯3.變量
Js變量是松散類型的,可以用來保存任何類型的數據。
如果變量定義在函數中,那么這個變量在函數退出后就會被銷毀。
e.g.
function test() { var msg = "hi"; } console.log(msg) // 報錯
檢查一個錯誤:
報錯message未定義,為什么呢?
答:因為沒執行啊
ECMA中一共有5種簡單數據類型(基本數據類型)數據類型:undefined null boolean string number,1種復雜數據類型:Object
Null : 就記住他叫空對象指針就行,所以typeof 是 Object。在定義一個暫時不用的對象變量時候,最好將這個變量賦值為null,體現出了它的概念特性,也區分了它和undefined的不同。
Boolean:if這種流控制語句,會自動將括號里的內容進行Boolean()操作
Number: NAN 表示應該返回數值的操作最后沒有返回數值,比如說2/"i",2/0不是NAN,是Infinity。第二點:NAN與任何值都不相等, 包括NAN。有一個函數isNaN(),這個函數的具體思路為:先看能不能轉化成數值(10,"10",Boolean),如果能則返回flase,不能的話返回true。理解number和parseInt的區別:parseInt("")是NAN,而Number是0;parseInt遇上非數字字符會停止,而Number直接NAN,比如小數點;
String:數值,布爾值,對象,和字符串都有toString()方法。只有number下的toString方法有第二個參數,表示轉化成幾進制后的值,其實有個String()方法更好一些,如果是null返回null,如果是undefined返回undefined,如果不是這兩個將默認使用toString()方法;另外一個小技巧,把某個值轉化為字符串直接用+""就可以了
Object:Object每個實例都存在一些屬性和方法:constructor,hasOwnproperty,toString …
5.操作符
一元操作符(++,--,+,-)
如果對于字符串進行操作,會返回NAN
s1 = +s1 ->相當于把s1轉化成數值型(前提看s1之前是什么類型,規則不同)
s1 = -s1 ->相當于把s1轉化成數值的同時變成了負值
位操作符
按位非(~)
var num1 = 25;
var num2 = ~num1
按位或(|)
按位與(&)
按位異或(^)
邏輯操作符:邏輯操作符都是短路操作,如果第一個操作能決定結果,就不執行第二個操作
加減法操作符
注意以下問題:"a:"+1+2 //應該輸出a12而不是a3
var result1 = 5 - "true" //4
Var result2 = NaN -1 //NaN
Var result3 = 3 - "" // 3
Var result4 = 3 - "2" // 1
關系操作符:
如果在關系操作符比較中,有一個值是數值,那么另一個值也會被強制轉換成數值,如:
Var result = ‘23’ < 3 //true var result = ’23’ < ‘3’ //false
任何操作數與NaN比較都是false
Var result1 = NaN < 3 //false
Var result2 = NaN >= 3 //false
相等操作符
==和!=是先進行轉換再比較
===和!==是不轉換直接進行比較
所以由于相等(== !=)存在數據類型的轉換問題,為了保持代碼類型的嚴謹性最好用 ===,還有一個細節,如果用相等符號進行比較,雖然比較的過程中可能會進行類型的轉換,但不影響最終的變量類型e.g:
var strEg = "1"; if(strEg == 1){ console.log(typeof strEg) // string } console.log(typeof strEg) // string6.語句
1.label,continue和break
break是立即退出當前層的循環,continue是重新開始下一層的循環,開始下一層的循環,例子
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)或在那層強制執行下次循環(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語句
會導致性能下降,一般不用。為什么不能直接用對象代替呢?
3.switch語句
switch語句中的條件判斷是全等操作,沒有類型轉換的操作。
7.函數1.Return:只能用于函數中,立即退出函數并返回值。不能用在if,for的代碼塊中。如果return的值為空,則立即停止執行函數,并返回undefined
2.傳遞的參數和arguments并不是同一個內存空間,只是他們的值是同步的,同時argument的長度是由執行時傳入的參數決定的,而不是定義時決定的。
3.沒有重載
這篇只是一些簡單的基礎知識點,之后會把這些細小知識點分別展開寫成文章
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96482.html
JavaScript 中的數據類型 JavaScript 有 5 種簡單數據類型:Undefined、Null、Boolean、Number、String 和 1 種復雜數據類型 Object 。 基本類型(值類型) Undefined Null Boolean Number String 復雜類型(引用類型) Object Array Date RegExp Function 基本包裝類...
摘要:一數據類型基本類型引用類型類型判斷返回結果未定義布爾值字符串數值對象或者函數拓展堆棧兩種數據結構堆隊列優先,先進先出由操作系統自動分配釋放,存放函數的參數值,局部變量的值等。 一、數據類型 基本類型:`Null Boolean String Undefined Number(NB SUN)` 引用類型:`Array Function Object` 類型判斷:typeof 返回結果...
摘要:異步本質上應該就是多線程語言的產物。如果是多線程的異步,假死的應該是運行方法的線程,而方法仍然會按預期打印出。當然了,按我個人的理解,應該說是是的回調函數。 引子 每個故事都有由來。前兩天在看 gulp 的時候,看到了它有個 promise 的玩意兒,然后的然后,這兩天就掉進了 javascript 的異步和回調的坑里面去了。 其間搜索了 javascript promise,看到了...
摘要:舉個例子在上面的例子可以看到,我們聲明是一個數字,但是我們在之后將的值又改成了字符串和布爾值后面會講這些類型。基本類型字符串表示一個字符串,如。因此,我們可以寫一個函數,用來精確檢測類型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定義 1. 什么是數據類型? 數據類型,就是將...
閱讀 866·2021-11-15 11:37
閱讀 3604·2021-11-11 16:55
閱讀 3270·2021-11-11 11:01
閱讀 999·2019-08-30 15:43
閱讀 2743·2019-08-30 14:12
閱讀 681·2019-08-30 12:58
閱讀 3389·2019-08-29 15:19
閱讀 2025·2019-08-29 13:59