第一章 JavaScript誕生
為什么JavaScript會出現(xiàn)呢氓轰?
? ? ? 先看一下他出現(xiàn)的背景:1當時絕大多數(shù)因特網(wǎng)用戶上網(wǎng)速度僅僅為28.8kbit/s峰伙。2因表單驗證和服務(wù)器頻繁交互數(shù)據(jù),而加重了用戶負擔程帕。
第一章知識點:
1.JavaScript組成:
核心:ECMAScript住练,主要規(guī)定了JavaScript的語言基礎(chǔ);
DOM(文檔對象模型)愁拭,提供訪問和操作網(wǎng)頁內(nèi)容的方法和接口讲逛;
BOM(瀏覽器對象模型),提供了與瀏覽器交互的方式和接口岭埠;
2.五大主流瀏覽器:
IE盏混,F(xiàn)irefox,Safari惜论,chrome许赃,opera
3.API(application programming interface)應(yīng)用程序編程接口
(理解比較淺顯啊)是用來管理應(yīng)用程序間溝通的一些要求馆类。
舉個栗子:
? ? ?以Yelp的應(yīng)用為例混聊,當你搜索附近的餐館時,位置信息會出現(xiàn)在上乾巧,Yelp沒有開發(fā)自己的地圖句喜。通過Google地圖的API,Yelp應(yīng)用把自家的信息——餐飲地址沟于、用戶評價等——發(fā)送到內(nèi)部的Google地圖功能咳胃,最后得到一幅帶有周圍餐館位置的地圖展示給用戶,這些都顯示在Yelp應(yīng)用內(nèi)部社裆。(http://www.leiphone.com/news/201406/api.html ?這篇文章將的很詳細)
第二章 在HTML中使用JavaScript
2.1<script>元素
<script>元素的重要屬性:
async:異步腳本拙绊,先下腳本,但不妨礙其他操作泳秀,但是加載完就執(zhí)行标沪;
defer:延遲腳本,外部腳本在文檔完全解析后執(zhí)行嗜傅;
只有script的:遇到j(luò)s就下載金句,下完了執(zhí)行。(所以一般吧js文件放在body最后吕嘀,為的是讓html完全解析后违寞,再加載js)
直接上圖:
此圖告訴我們以下幾個要點:
defer和async在網(wǎng)絡(luò)讀取(下載)這塊兒是一樣的挡闰,都是異步的(相較于 HTML 解析)
它倆的差別在于腳本下載完之后何時執(zhí)行乒融,顯然defer(在html解析完成后執(zhí)行)是最接近我們對于應(yīng)用腳本加載和執(zhí)行的要求的,async則是一個亂序執(zhí)行的主摄悯,反正對它來說腳本的加載和執(zhí)行是緊緊挨著的赞季,所以不管你聲明的順序如何,只要它加載完了就會立刻執(zhí)行
內(nèi)部嵌入文件和外部文件:
內(nèi)部嵌入文件格式:
<script type="text/javascript"></script>
外部文件格式:
<script type="text/javascript" src="example.js" ></script>
<script type="text/javascript" src="http://www.somewhere.com/afile.js"></script>
文檔模式
<!DOCTYPE html>
文檔模式分類:
混雜模式(quirk mode)
標準模式(standard mode)
準標準迷失(almost standard mode)奢驯。
如果文檔開始未發(fā)現(xiàn)文檔類型說明申钩,則所有瀏覽器會開啟混雜模式。
<noscript>
當瀏覽器不支持腳本瘪阁,或者瀏覽器支持腳本但是腳本被禁時撒遣,用<noscript>可以讓頁面平穩(wěn)退化。
<noscript>
中間可以寫任何能出現(xiàn)在<body>中的html元素
<p>這是例子罗洗,本頁面需要瀏覽器支持(啟用)JavaScript</p>
</noscript>
第三章 基本概念
語法:
1.區(qū)分大小寫
2標識符(變量愉舔,函數(shù)名,屬性的名字伙菜,或者是函數(shù)的參數(shù)): ?
第一個字符必須是字母轩缤,下劃線或者美元符號,其他字符可以是字母贩绕,下劃線火的,美元符號和數(shù)字。
按照慣例淑倾,標識符用駝峰大小寫格式馏鹤,即第一個字母小寫,剩下每個單詞首字母大寫娇哆。
保留字湃累,關(guān)鍵字不能用做標識符
3注釋
// ? 單行注釋
/*
* ? ? 多行注釋
*/
順便來復(fù)習一下html和css注釋。
<!--html注釋 ?-->
/*css注釋*/
4嚴格模式
在腳本頂部添加"ues strict"編譯指示碍讨,來讓支持JavaScript的引擎切換到嚴格模式治力。
5語句
單行語句用分號結(jié)尾
代碼塊以({)開始,(})結(jié)束
6變量
局部變量:var message="hi"宵统,是作用域內(nèi)的局部變量痊班,比如函數(shù)中使用var定義一個變量废亭。變量 骂删,在退出函數(shù)后被銷
可以一條語句定義多個變量:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?var message="hi" , ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?age=29;
全局變量:message="hi"
數(shù)據(jù)類型:
五個基本數(shù)據(jù)類型(undefined,null芥被,boolean夏漱,number芳室,string)
+一個復(fù)雜數(shù)據(jù)類型Object堪侯。
用typeof操作符可以檢測變量數(shù)據(jù)類型。
1.undefined類型
只有一個值
在使用var聲明變量荔仁,但是未對他初始化時伍宦,變量值為undefined。
var age
alert(age) ? ?//產(chǎn)生錯誤
alert(typeof age)//"undefined"
2.Null類型
只有一個值乏梁,null
null表示一個空對象指針次洼,所以用typeof檢測null時,返回"object"
undefined是null的一個派生遇骑,所以alert(null==undefined) ? //true
只要想保存對象的變量還沒有真正保存對象卖毁,就應(yīng)該明確的讓該變量保存null值。
3.Boolean類型
有兩個值落萎,true和false亥啦;
JavaScript中的所以類型的值都有與這兩個值等價的值!
舉個栗子:
var message="hello world";
if(messae){
? ?alert("Value is true!")
}
message自動轉(zhuǎn)換為true
4.Number類型
分為整數(shù)和浮點數(shù)值(雙精度數(shù)值)练链;
整數(shù)可以用十進制翔脱,八進制,十六進制表示媒鼓,但最后都是被轉(zhuǎn)換為十進制届吁;
浮點數(shù)值,就是數(shù)值中包含一個小數(shù)點隶糕,且小數(shù)點后有至少一個值瓷产;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2016/2/3
科學計數(shù)法:3.125e7=31250000;3.125e-4=0.0003125枚驻;
如果數(shù)值超過JavaScript的數(shù)值范圍濒旦,則會自動轉(zhuǎn)換成Infinity值;確定一個數(shù)值是不是有窮可以用isFinite()函數(shù)再登。
NaN(Not a Number)特殊數(shù)值尔邓,表示一個本來要返回數(shù)值的操作數(shù)未返回數(shù)值的情況;特點:任何數(shù)除以0锉矢,返回NaN梯嗽;NaN與任何數(shù)都不相等,包括他本身沽损。isNaN()函數(shù)可以確定參數(shù)是否“不是數(shù)值”灯节。
數(shù)值轉(zhuǎn)換:
三個可以把非數(shù)值轉(zhuǎn)化數(shù)值的函數(shù)
Number()
parseInt(要轉(zhuǎn)換的值,進制參數(shù))更常用來處理整數(shù)。如果第一個字符不是數(shù)字或者符號炎疆,就返回NaN卡骂;如果是就繼續(xù)解析第二個字符,直到遇到非數(shù)字字符形入∪纾可以解析八進制和十六進制。小數(shù)點后面的會被忽略亿遂。
parseFloat()處理浮點數(shù)值浓若,第一個小數(shù)點后有效,第二個小數(shù)點無效蛇数。
string類型
字符串
有l(wèi)ength屬性挪钓,表示字符串長度
字符串值是不可改變的,如果改變某個變量保存的字符串耳舅,就要銷毀原來的字符串诵原,然后在用另一個包含新值的字符串填充該變量。
轉(zhuǎn)換為數(shù)值:
toString(),null和undefined沒有此方法挽放;
String(),值有toString()方法就用此方法蔓纠。值是null辑畦,返回"null",值是undefined腿倚,返回"undefined"
Object類型
對象是一組數(shù)據(jù)和功能的集合纯出;
用new操作符后跟要創(chuàng)建的對象類型的名稱來創(chuàng)建;
valueOf()敷燎,返回對象的字符串暂筝,數(shù)值或者布爾值表示;
操作符
一元操作符(只操作一個值得操作符)
1. ?++ 和--
前置型 var age=29 ; ++age; ? ? ? ? ?//30
后置型var age=29; age++; ? ? ? ? ? ?//30
區(qū)別:后置型操作符在包含他的語句被求值之后執(zhí)行硬贯;
eg:var num1=2;
? ? ? var num2=20;
? ? ? var num3=num1-- + num2; ? ? ? ? //22
? ? ? var num4=num1+num2; ? ? ? ? ? ? ?//21
2.一元加和減操作符
+
- 可以用來表示負數(shù)
非數(shù)值用+或-時焕襟,會先將值轉(zhuǎn)換為數(shù)值再進行計算
布爾操作符
邏輯非(!)
邏輯與(&&)
邏輯或(||)
乘性操作符
乘法*
除法/
加性操作符
加法+
減法-
關(guān)系操作符
大于>
小于<
大于等于>=
小于等于<=
相等操作符
相等(==)和不相等(饭豹!=)鸵赖,先轉(zhuǎn)換再比較
全等(===)和不全等(!==)拄衰,僅比較而不轉(zhuǎn)換
條件操作符
variable = boolean_expression ? true_value : false_value;
eg:var max=(num1>num2) ? num1 : num2;
如果num1大于num2(返回true)它褪,給max賦值為num1,反之關(guān)系式會返回false翘悉,給max賦值為num2.
賦值操作符
復(fù)合賦值
eg:var num=10; num+=10 ? //等于num=num+10
乘/賦值 ?*=
除/賦值 ?/=
模/賦值 ?%=
加/賦值 ?+=
減/賦值 ?-=
左移/賦值 ?<<=
有符號右移/賦值 ?>>=
無符號右移/賦值 ?>>>=
逗號操作符
逗號操作符可以讓一個語句中執(zhí)行多個操作:var num1=2,num2=3,num3=4;
可以用來賦值茫打,返回最后一項:var num=(1,2,3,4,5); ? ?//num值是5
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2016/2/4