1. ==和===
js中==運算會先將兩邊的資料型別進行轉換,如: 1=='1',會先把'1'轉換成1,再進行比較,結果自然是true
而===運算是將兩邊的資料進行完全比較,資料型別和數值必須完全相同。因此1==='1',結果自然是false
被比較值 b
undefined
null
number
string
boolean
object
被比較值 a
undefined
true
true
false
false
false
isfalsy(b)
null
true
true
false
false
false
isfalsy(b)
number
false
false
a === b
a === tonumber(b)
a=== tonumber(b)
a=== toprimitive(b)
string
false
false
tonumber(a) === b
a === b
tonumber(a) === tonumber(b)
toprimitive(b) == a
boolean
false
false
tonumber(a) === b
tonumber(a) === tonumber(b)
a === b
tonumber(a) == toprimitive(b)
object
false
false
toprimitive(a) == b
toprimitive(a) == b
toprimitive(a) == tonumber(b)
a === b
2.變數提公升
變數提公升即在js中宣告的變數會被提公升到當前函式作用域的頂部,下一以乙個例子進行解析
var a = 'aaa';
function b()
b();
console.log(a);
此時輸出的結果為
//undefined
//bbb
//aaa
由於存在變數提公升,上述**的實際執行順序為:
var a = 'aaa';
function b()
b();
console.log(a);
函式b內部的a的定義會被提公升到函式b的頂部,因此第乙個a的輸出是undefined。
那為什麼最後乙個a的輸出仍是aaa而不是bbb呢,這是因為當函式內部變數與函式外部變數同名時,內部讀取,修改的變數預設為內部變數,因此不會修改到外部的a(此時可以在內部通過使用this.a讀取外部的a)
3.js浮點數計算
js中存在浮點數計算不精確的問題,即:0.1+0.2不等於0.3,而是輸出0.3000000000004。
解決這個問題的方法是將浮點數運算改為非浮點數運算,即:(0.1*10+0.2*10)/10,輸出便為0.3
此處提一下js的四捨五入方法:
math.ceil(3.5) // 4
math.floor(3.5) // 3
math.round(3.5) // 4
前端js學習筆記 函式
函式使用分為兩步 宣告函式 和 呼叫函式 1.宣告函式 function 函式名 1 function是宣告函式的關鍵字,不能改動 2 函式不呼叫 自己不執行 2.呼叫函式 函式名 呼叫函式的時候一定要加小括號 3.函式的形參和實參 function 函式名 形參1,形參2 函式名 實參1,實參2 ...
前端學習筆記css篇(1)
1.響應式布局 常用的響應式布局方法 為不同解析度配置不同的css檔案 當解析度大於720px時 media screen and min width 720px 2.css動畫 css3的animation提供簡單的動畫效果,如設定透明度漸變 header keyframes c opacity ...
前端學習筆記Vue篇(3)
在vue專案開發過程中經常遇到這樣的情況 很多元件或者模組的結構相同,只不過是部分內容稍有不同。這種情況下,每次編寫相似的 不僅會增大工作量,還會讓 變得臃腫和冗餘。slot便是一種用來解決這種情況的簡潔方案,話不多說,上 父元件 test slot.vue 替換了name header 的slot...