摘要:安全防范機制未聲明變量聲明未初始化變量使用來做安全防范機制可以預防報錯數組數組可以容納任何類型的值。因此與進行操作即可截取中的位數位。
安全防范機制
未聲明變量undeclared、聲明未初始化變量undefined
var a b typeof a //"undefined" typeof b //"undefined"
使用typeof來做安全防范機制可以預防報錯
if(typeof r !== "undefined"){ //do } else{ //do }數組
數組可以容納任何類型的值。
用delete刪除數組的某一項值后,數組長度不會改變
var a = [1,2,3] delete a[1] console.log(a.length) //3
創建“稀松”數組(含有空白或空缺的數組)后,其中空白單元值為undefined,與將其顯示賦值為undefined有區別
數組通過數字進行索引,但它也是對象,可以包含字符串鍵值和屬性,但是這些并不計算在數組長度內
var c = [] c[0] = 1 c ["dd"] = 2 console.log(c.length) // 1
注意:如果字符串值能夠被強制轉換為十進制數字的話,它就可以被當作數字索引來處理
var d = [] b[0] = 1 b["13"] = 12 console.log(b) // [1, 13: 12]0: 1 13: 12length: 14類數組
將類數組轉化成真數組,使用數組工具函數indexOf() concat() forEach() slice().通過arguments對象將函數的參數當作列表來訪問在ES6中已廢棄
Array.form(arguemnts)實現返回參數列表的數組復本
js中字符串是不可變的,而(字符)數組是可變的。
字符串不變指的是字符串成員函數不會改變其原始值,而創建并返回一個新的字符串。而數組成員都是在其原始值上進行操作。
var m = "foo" var n = ["f","o","o"] m[1] = 1 n[1] = 1 console.log(m,n) // foo ["f", 1, "o"]
c = m.toUpperCase() m === c //false m //"foo" c //"FOO"
許多數組函數用來處理字符串很方便,雖然字符串沒有這些函數,但可以通過“借用”數組的非變更方法來處理字符串
通常方法:
Array.prototype.join.call()
字符串反轉:
不能通過Aarry.prototype.reverse.call()來“借用”可變更成員函數reverse()
簡單字符串反轉常用方法:
var c = "foo" c //將字符串轉成字符數組 .split("") .reverse() //將字符數組轉成字符串 .join("") //"o,o,f"數字
js沒有真正意義上的“整數”,js中數據類型基于IEEE754標準實現的,該標準通常也被稱為”浮點數“。
較小的數值怎樣來判斷0.1 + 0.2 == 0.3是否相等呢?
設置一個誤差范圍值,
ES6中定義Number.EPSILON
為ES6寫的polyfill
if(!Number.EPSILON){ Number.EPSILON = Math.pow(2,-52) }
可以使用Number.EPSILON來比較兩個數字是否相等(即在指定誤差內)
檢查一個數是否為整數ES6:Number.isInterger
polyfill
if(!Number.isInteger){ Number.ismteger = function(num){ return typeof num == "number" && num % 1 == 0 } }檢查是否為一個安全的整數
polyfill
if(!Number.isSafeInteger){ Number.isSafeInteger = function)(num){ return Number.isInteger(num) && Math.abs(num) <= Num.MAX_SAFE_INTEGER } }32位有符號整數
整數最大能夠達到53位,有些數字操作適用32位數字。
a | 0可以將變量轉換成32位有符號的整數,因為整數運算符|只適用32位整數。因此與0進行操作即可截取a中的32位數位。
undefined null:既是類型也是值
null 空值,特殊關鍵字,指曾賦過值,但是目前沒有值
undefined 標志符,沒有值,未賦值
不是數字的數字(無法解析為常規十進制/十六進制)
var a = 2/"foo" //NaN typeof a //"number"
自反的值 NaN !== NaN
isNaN():檢查參數是否不是NaN,也不是數字
var a = 2/"foo" var b = "foo" window.isNaN(b) //true window.isNaN(a) //true
ES6:Number.isNaN
polyfill:
if(!Number.isNaN){ Number.isNaN = function(num){ return num !== num } }無窮數
var a = -1 / 0 //-Infinity var b = 1 / 0 //Infinity var c = 1 / Infinity //0 var d = -1 / Infinity //-0 var e = Infinity / Infinity // NaN零值
0和-0
var a = 0 / -3 //-0 var b = 0 * -3 //-0
加法和減法運算得不到-0
要區分0和-0
function isNegZero (n) { n = Number(n) return (n===0) && (1/n === -Infinity) }特殊等式
ES6: Object.is(..)
polyfill
if(!Object.is){ Object.is = function (v1,v2) { if(v1 === 0 && v2 === 0 ){ return 1 / v1 === 1 / v2 } if(v1 !== v1){ return v2 !== v2 } return v1 === v2 } }
PS:數值考慮NaN 與 0 -0
值和引用js對值和引用的賦值在語法上沒有區別,完全根據值的類型
值復制:標量基本類型的值是不可更改的
null / undefined
字符串
數字 new Number()
boolean
symbol
引用復制:同時指向一個值,更改的也是同一個值
對象(數組和封裝對象)
函數
如果通過值復制來傳遞復合值,就需要為其創建一個復本,這樣傳遞的就不是原始值foo(a.slice())
相反,如果將標量基本類型值傳遞到函數并進行更改,就需要將該值封裝到一個復合值中,然后通過引用復制進行傳遞
function foo(wrapper){ wrapper.a = 42 } var obj = { a : 2 } foo(obj) obj.a //42
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86709.html
摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現在已經一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現將已經寫好的文章整理一個目錄,方便更多的小伙伴去學習。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:申明變量變量名以分號結束。如果一定要使用點的話,需要改變成駝峰式命名法。基礎篇練習看完以上的小伙伴,可以看兩個例子的效果,試著做一下。練習一點擊按鈕,設置方塊大小練習二點擊按鈕,增加或減小字體大小 1.JS存放在代碼中的位置 1.JS寫在行間 hello world 優點:直接,簡單 缺點:不方便復用和維護,不符合結構行為分離規范 2.JS寫在script ( 一般寫在body...
摘要:申明變量變量名以分號結束。如果一定要使用點的話,需要改變成駝峰式命名法。基礎篇練習看完以上的小伙伴,可以看兩個例子的效果,試著做一下。練習一點擊按鈕,設置方塊大小練習二點擊按鈕,增加或減小字體大小 1.JS存放在代碼中的位置 1.JS寫在行間 hello world 優點:直接,簡單 缺點:不方便復用和維護,不符合結構行為分離規范 2.JS寫在script ( 一般寫在body...
摘要:申明變量變量名以分號結束。如果一定要使用點的話,需要改變成駝峰式命名法。基礎篇練習看完以上的小伙伴,可以看兩個例子的效果,試著做一下。練習一點擊按鈕,設置方塊大小練習二點擊按鈕,增加或減小字體大小 1.JS存放在代碼中的位置 1.JS寫在行間 hello world 優點:直接,簡單 缺點:不方便復用和維護,不符合結構行為分離規范 2.JS寫在script ( 一般寫在body...
摘要:使用,程序員還可以用它來判斷某個節點是否被賦予了某個類。現在是增加現在是刪除是否存在類檢查是否含有某個類結果是或者。屬性返回類列表中類的數量。查看元素有多少個類名獲取獲取元素的所有類名返回類名在元素中的索引值。 頁面DOM里的每個節點上都有一個classList對象,程序員可以使用里面的方法新增、刪除、修改節點上的CSS類。使用classList,程序員還可以用它來判斷某個節點是否被賦...
閱讀 2472·2021-11-24 09:39
閱讀 3518·2019-08-30 15:53
閱讀 594·2019-08-29 15:15
閱讀 2903·2019-08-26 13:23
閱讀 3212·2019-08-26 10:48
閱讀 643·2019-08-26 10:31
閱讀 748·2019-08-26 10:30
閱讀 2359·2019-08-23 18:32