前端瞬息萬(wàn)變,但萬(wàn)變不離其宗,這個(gè)“宗”指的就是javascript,很多現(xiàn)在很熱門的框架,比如angluar.js、vue.js、jquery都是基于javascript。我承認(rèn)我手動(dòng)敲代碼的能力有點(diǎn)薄弱,尤其是javascript這塊,不想一直重復(fù)造輪子,所以才想深入js
1、嚴(yán)格模式與混雜模式的區(qū)別
嚴(yán)格模式:又稱標(biāo)準(zhǔn)模式,是瀏覽器按照w3c標(biāo)準(zhǔn)解析代碼
混雜模式:又稱兼容模式,瀏覽器用自己的方式解析代碼
h5并無(wú)嚴(yán)格模式與混雜模式之分,因?yàn)樗奈臋n的聲明是這樣的<!DOCTYPE ?html>,沒(méi)有dtd

其實(shí)現(xiàn)在是用h5了,所以很少聽(tīng)到說(shuō)嚴(yán)格模式與混雜模式之分,因?yàn)樽罱谏钊雑s,書上總是提到嚴(yán)格模式,所以我不得不去了解下,記住一點(diǎn)嚴(yán)格模式就是瀏覽器按照w3c的標(biāo)準(zhǔn)去解析代碼
2、<noscript></noscript>的作用,如果當(dāng)前瀏覽器不支持腳本或者該瀏覽器禁用了腳本
我們可以使用noscript來(lái)寫內(nèi)容,可以在上面說(shuō)的兩種情況下呈現(xiàn),但是對(duì)于支持腳本的瀏覽器則是無(wú)效的,不會(huì)顯示noscript里面的內(nèi)容
3、script 的defer屬性可以讓當(dāng)前該腳本在文檔呈現(xiàn)之后再執(zhí)行腳本(好像并沒(méi)有什么用),async屬性表示當(dāng)前腳本不必等其他腳本,也不會(huì)阻塞其他腳本(好像很少用到,不過(guò)這些知識(shí)還是知道的好)
4、一個(gè)關(guān)于ECMAscript的變量的問(wèn)題(劃重點(diǎn)),用var定義的變量在該函數(shù)的作用域當(dāng)中是局部變量,離開(kāi)該函數(shù)的作用域之后,變量就會(huì)被銷毀
如:function test(){
var message = “hi";//局部變量
}
test();
alert(message);//錯(cuò)誤
如:function test(){
?message = “hi";//局部變量(不推薦省略var 來(lái)定義全局變量,因?yàn)榫植孔饔糜蛑卸x的全部變量很難維護(hù),況且在嚴(yán)格模式下給未聲明的變量賦值會(huì)拋出一個(gè)ReferenceError錯(cuò)誤,那在哪里定義全局變量呢,當(dāng)然是函數(shù)外面拉)
}
test();
alert(message);//hi
5、數(shù)據(jù)類型,undefined、boolean、string、number、object、null,這里特別強(qiáng)調(diào)的是undefined,是使用var關(guān)鍵字聲明但是并沒(méi)有初始化(重點(diǎn)重點(diǎn)),之前我以為就是沒(méi)有聲明就是返回undefined,誰(shuí)知理解錯(cuò)誤
比如 var message; alert(message);//undefined
6、null指針是一個(gè)特殊的對(duì)象(object),不得不提null與undefined的區(qū)別,,undefined是派生自null的,null是要要保存對(duì)象但是并沒(méi)有真正的保存對(duì)象,undefined與null的意思很相近,但還是有些細(xì)微的差別,比如轉(zhuǎn)化為數(shù)值的是后,undefined是NaN(not a number非數(shù)值),null是0??戳巳钜环宓娜罩?,總結(jié)到,null表示”此處沒(méi)有值“,而undefined表示”此處有值,但還沒(méi)有定義“

http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html阮一峰關(guān)于undefined與null的區(qū)別的日志,想了解得更清楚可以參考下
6、isNaN方法的意思,能轉(zhuǎn)化為數(shù)值返回flase,不能轉(zhuǎn)化數(shù)值返回ture
? 比如alert(isNaN("NaN")) //不能轉(zhuǎn)化為數(shù)值,返回值是ture,同樣的alert(isNaN("blue")也返回true
而alert(isNaN("true"I)//可以轉(zhuǎn)化0,alert(isNaN(”10“))//可以轉(zhuǎn)化數(shù)值10,返回f都是false
7、數(shù)值轉(zhuǎn)換的方法parseInt()、parseFloat()、Number()
如果是布爾型,則返回1、0;如果是數(shù)字型,則只是簡(jiǎn)單傳入與返回;如果是null則返回0;如果是undefined則返回NaN;如果是數(shù)字型的字符串,則返回?cái)?shù)字,如果是進(jìn)制的數(shù)字則返回相同大小的十進(jìn)制,其他類型的字符串則返回NaN(非數(shù)字)
8、一元操作符的注意事項(xiàng),比如說(shuō) ?var n=’z'; ? var s1='2'; ? s1++ //變成數(shù)值型的3,而n++//返回NaN
9、按位異或(如果兩個(gè)都是1或者都是0的話返回0,其他的返回1。按照我們高中老師的說(shuō)法,性別相同的人生不出孩子,有點(diǎn)小污~~~~)?
10、==與===的區(qū)別==只會(huì)判斷值是否相等,而===會(huì)判斷值和類型是否一致
比如undefined==null 返回true,因?yàn)樗鼈儠?huì)返回類似的值
null===undefined會(huì)false,因?yàn)樗麄兪遣煌愋偷闹?/p>
11、label語(yǔ)句label:statement
比如start:for ( var i=0; i<count; i++){ alert(i); } ? ? ?start可以用break或者continue引用,加標(biāo)簽的語(yǔ)句一般與for語(yǔ)句配合使用(講真,以前看不懂這種寫法)
12、with語(yǔ)句:作用是將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象當(dāng)中 with(expression)statement;
比如:var qs=location.search.substring(1);
? ? ? ? var ?hostname=loaction.hostname;
? ? ? ? var url = location.href;
上面的代碼都包含了location對(duì)象,使用with語(yǔ)句可以這么做
with(location){
var qs = search.substring(1);
var ?hostname = hostname;
var url = ?href;
}(使用了with語(yǔ)句關(guān)聯(lián)了location對(duì)象)嚴(yán)格模式當(dāng)中不允許使用with語(yǔ)句,否則將視為語(yǔ)法錯(cuò)誤
使用大量的with語(yǔ)句會(huì)導(dǎo)致性能下降,因此在大型的項(xiàng)目開(kāi)發(fā)當(dāng)中不建議使用with語(yǔ)句
13、參數(shù)
ECMAscript不介意傳遞進(jìn)來(lái)多少個(gè)參數(shù),也不介意參數(shù)的類型,之所以這樣,是因?yàn)镋CMAscript的參數(shù)是用一個(gè)數(shù)組表示的,在函數(shù)體可以通過(guò)arguments對(duì)象去訪問(wèn)這個(gè)數(shù)組,從而獲取每一個(gè)參數(shù),他并不是數(shù)組的實(shí)例,只是與數(shù)組類似,比如訪問(wèn)第一個(gè)參數(shù)arguments[0],arguments[1]...
比如:function doAdd(){
? if(arguments.length == 1) alert(arguments[0]+10);
}else if(arguments.length ==2 ) alert(arguments[0]+arguements[1]);
}
doAdd(10); ? //20 因?yàn)橹挥幸粋€(gè)參數(shù)
doAdd(20,30); ? ?//50 因?yàn)橛袃蓚€(gè)參數(shù)
14、ECMAscript沒(méi)有重載(不能向其他語(yǔ)言一樣比如java,重載的意思就是為一個(gè)函數(shù)編寫兩個(gè)定義,只要這兩個(gè)函數(shù)定義的簽名(接受的類型和數(shù)量)不同即可,但是是ECMAscript沒(méi)有簽名,因此無(wú)法真正的重載
比如 ?function sum1(num){ ? ? return num+100 ; ?}
? function sum1(num ) { ? return num+200; ?}
var result = sum1(100); //300


留下兩個(gè)問(wèn)題!現(xiàn)在還有點(diǎn)想不通昨晚為了完成客戶的單子,很晚才睡,頂著熊貓眼T_T