使用<script>元素的方式有兩種:
- 直接在頁面中嵌入JavaScript代碼陷舅,代碼從上至下依次解釋墨状。
<script type="text/javascript">
function sayHi() {
alert("Learn JS!");
}
</script>
- 包含外部JavaScript文件杯瞻。使用scr屬性來指向外部JavaScript文件扭吁,這個文件可以是外部文件球碉,也可以是外部域文件蜓斧。但是使用外部域文件時,一定要確保安全睁冬,否則會被惡意篡改挎春。
<script type="text/javascript" scr="test.js"></script>
<script type="text/javascript" scr="http://www.somewhere.com/afile.js"></script>
<script>的屬性
- scr -- 存儲外部JS文件
- defer(延遲腳本) -- 設(shè)置defer屬性,可以讓腳本在文檔完全呈現(xiàn)之后再執(zhí)行,延遲腳本總是按照指定它們的順序執(zhí)行
- async(異步腳本) -- 可以表示當(dāng)前腳本不必等待其他腳本直奋,也不必阻塞文檔呈現(xiàn)狼荞。不能保證異步腳本按照它們在頁面中出現(xiàn)的順序執(zhí)行
JS語法
- 區(qū)分大小寫
- 標(biāo)識符: 字母、下劃線或美元符號開頭帮碰,其他字符是字母相味、下劃線、美元符號或數(shù)字
- 代碼塊以左花括號({)開頭殉挽,以右花括號(})結(jié)尾
- ECMAScript中的語句以一個分號結(jié)尾
- 注釋
function sayHi() { //代碼塊以{}花括號開始結(jié)尾
alert("Learn JS!"); //分號結(jié)尾
}
// 單行注釋
/*
多行注釋
*/
- 關(guān)鍵字: 可用于表示控制語句的開始或結(jié)束丰涉,或者用于執(zhí)行特定操作等,不可用于標(biāo)識符
- 保留字: 可能在將來被用作關(guān)鍵字
JS 變量 + 數(shù)據(jù)類型
- 變量:
ECMAScript的變量是松散類型的斯碌,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)一死。即每個變量僅僅是一個用于保存值的占位符而已。
var test;
關(guān)鍵字 變量名(標(biāo)識符)傻唾;
- 數(shù)據(jù)類型:
5種基本(簡單)數(shù)據(jù)類型:Undefined投慈、Null、Boolean冠骄、Number和String
1種復(fù)雜數(shù)據(jù)類型:Object伪煤, 本質(zhì)上是由一組無序的名值對組成的 - typeof 操作符:
用來檢測給定變量的數(shù)據(jù)類型
alert(typeof(95)) //"bumber"
var message = "Hello JS"
alert(typeof(message)) //"string"
Object類型(對象)
對象其實就是一組數(shù)據(jù)和功能的集合。對象可以通過執(zhí)行new操作符后跟要創(chuàng)建的對象類型的名稱來創(chuàng)建凛辣。而創(chuàng)建Object類型的實例并為其添加屬性和(或)方法抱既,就可以創(chuàng)建自定義對象。
var o = new Object();
語句
- If else
- do while
- while
- for
- for - in: 每次執(zhí)行循環(huán)時扁誓,都會將window對象中存在的一個屬性名賦值給變量propName防泵。這個過程會一直持續(xù)到對象中的所有屬性都被枚舉一遍為止。
for(var propName in window){
document.write(propName)
}
- break/continue
- switch
- label: 使用label語句可以在代碼中添加標(biāo)簽蝗敢,以便將來使用捷泞。以下是label語句的語法:
start: for (var i=0; i<5; i++){
alert(i)
}
- with:接收的是location對象,因此其變量對象中就包含了location對象的所有屬性和方法
函數(shù)
- ECMAScript函數(shù)的參數(shù)與大多數(shù)其他語言中函數(shù)的參數(shù)有所不同寿谴。ECMAScript函數(shù)不介意傳遞進來多少個參數(shù)锁右,也不在乎傳進來參數(shù)是什么數(shù)據(jù)類型。
- 沒有函數(shù)重載
function 函數(shù)名(參數(shù)1拭卿,參數(shù)2){
函數(shù)體骡湖;
}
注意:
- JavaScript沒有塊級作用域
- 在編寫JavaScript代碼的過程中,不聲明而直接初始化變量是一個常見的錯誤做法峻厚,因為這樣可能會導(dǎo)致意外响蕴。我們建議在初始化變量之前,一定要先聲明惠桃,