defer(延遲腳本)和async(異步腳本)區(qū)別:當(dāng)把script的標(biāo)簽放在頭部時(shí)文狱,都是延遲加載,立即執(zhí)行贰健。但是async不保證按順序加載北滥。使用async是不讓頁(yè)面等待腳本的加載和執(zhí)行刚操,從而異步加載頁(yè)面的其他內(nèi)容。
xhtml再芋,可擴(kuò)展超文本標(biāo)記語(yǔ)言菊霜,是將html基于XML的應(yīng)用而重新定義的一個(gè)標(biāo)準(zhǔn)。嚴(yán)格版的html济赎。
數(shù)據(jù)類(lèi)型
js中變量類(lèi)型分為兩大類(lèi)鉴逞。基本數(shù)據(jù)類(lèi)型和引用類(lèi)型联喘』眩基本數(shù)據(jù)類(lèi)型指值直接保存在變量本地的類(lèi)型辙纬。引用類(lèi)型變量中實(shí)際保存的是實(shí)際數(shù)據(jù)所在的地址值豁遭。
js中有5種簡(jiǎn)單數(shù)據(jù)類(lèi)型(基本數(shù)據(jù)類(lèi)型):Sting Boolean Undefined Null Number,1種復(fù)雜類(lèi)型Object類(lèi)型贺拣。
使用typeof操作符檢測(cè)變量的基本類(lèi)型蓖谢,返回undefined number string boolean object function。對(duì)未聲明的變量執(zhí)行typeof也會(huì)返回undefined
使用instanceof檢測(cè)引用類(lèi)型的值譬涡。
Boolean
調(diào)用Boolean()時(shí)闪幽,0 NAN null undefined 空字符串都會(huì)轉(zhuǎn)換成false
Number
把非數(shù)值轉(zhuǎn)換為數(shù)字的函數(shù):Number() parseInt() parseFloat()
Number(x) VS parseInt(str)
Number(x)只認(rèn)識(shí)純數(shù)字組成的字符串,可轉(zhuǎn)bool類(lèi)型涡匀,可將空字符串轉(zhuǎn)換為0
parseInt(str)認(rèn)識(shí)包含非數(shù)字字符的字符串開(kāi)頭位置的數(shù)字盯腌,parseInt轉(zhuǎn)不了bool,將空字符串轉(zhuǎn)換為NaN
String
Sting() VS toString()
toString()對(duì)null和undefined這兩個(gè)值無(wú)效陨瘩,String()是萬(wàn)能的腕够,轉(zhuǎn)換規(guī)則级乍,先查看值是否有toString()的方法,有就調(diào)用該方法帚湘,并返回相應(yīng)結(jié)果玫荣。如果值是null就返回null,如果值是undefined就返回undefined
Object
對(duì)象就是一組數(shù)據(jù)和功能的集合大诸。
valueOf():返回對(duì)象的字符串捅厂,數(shù)組,布爾值表示资柔。通常與toString()方法的返回值相同
操作符
一元操作符(只能操作一個(gè)值的叫做一元操作符焙贷。)
1.遞增遞減操作符
++a VS a++
++a/--a是執(zhí)行前置遞增遞減操作時(shí),變量的值時(shí)在語(yǔ)句被求值以前改變的贿堰。
var age = 18
var newAge = ++age + 2
alert (age) //19
alert (newAge) //21
a++/a--變量的值是在語(yǔ)句求值之后改變的盈厘。
var num1 = 2
var num2 = 10
var num3 = num1-- + num2 //12
var num4 = num1-- + num2 //11
2.加減操作符
與數(shù)學(xué)書(shū)上講的完全一樣,?放在數(shù)值前面官边,對(duì)數(shù)值不會(huì)有任何影響沸手。一元減操作符主要用于表示負(fù)數(shù)。
var num = 10
num = -num //-10
位操作符
按位非/按位與/按位或/按位異或
- 按位非(~)本質(zhì)操作數(shù)的負(fù)值減1
var num1 = 25
var num2 = ~num1 //-26
- 按位與(&) 都是1結(jié)果才是1 注簿,任何一個(gè)為0結(jié)果都是0
var num1 = 25 & 3
alert(num1) //1
- 按位或(|)其中任何一位是1就是1契吉,兩個(gè)位都是0的情況下才返回0
var num1 = 25 | 3
alert(num1) //27
- 按位異或(^)其中一個(gè)是1才返回1,兩位都是1或者0則返回0
var num1 = 25 ^ 3
alert(num1) //26
布爾操作符
邏輯與(&&)/邏輯或(||)/邏輯非(9羁省)
短路邏輯:第一個(gè)值可以決定結(jié)果捐晶,就不會(huì)對(duì)第二個(gè)數(shù)求值了。
關(guān)系操作符
> <= >= < >
相等操作符
==(強(qiáng)制轉(zhuǎn)型) ===(類(lèi)型值必須相等)
null == undefined //true
null === undefined //false
條件操作符
三目運(yùn)算 var a = (num1 > num2) ? num1 : num2
賦值操作符
+= -= *= /= %=
語(yǔ)句
if else
do while(至少執(zhí)行一次)/while/for/for in(遍歷枚舉對(duì)象的屬性)
continue(跳出本輪循環(huán)妄辩,繼續(xù)下一輪)/break(徹底打破循環(huán)跳出)
switch case default(當(dāng)case表達(dá)式里都不匹配時(shí)惑灵,自動(dòng)執(zhí)行default,相當(dāng)于else)
函數(shù)
封裝了一段任務(wù)的步驟清單的代碼段眼耀,再起一個(gè)任務(wù)名英支。函數(shù)是一個(gè)引用類(lèi)型的對(duì)象。
不支持重載哮伟,但是可以模擬重載干花。函數(shù)return返回后后續(xù)代碼不會(huì)執(zhí)行。函數(shù)中傳入的參數(shù)arguments是類(lèi)數(shù)組對(duì)象楞黄,可以訪(fǎng)問(wèn)arguments.length