JavaScript極簡(jiǎn)入門教程(一):基礎(chǔ)篇
閱讀本文需要有其他語言的編程經(jīng)驗(yàn)。
開始學(xué)習(xí)之前
大多數(shù)的編程語言都存在好的部分和差的部分。本文只講述 JavaScript 中好的部分,這是因?yàn)椋?/p>
1.僅僅學(xué)習(xí)好的部分能夠縮短學(xué)習(xí)時(shí)間
2.編寫的代碼更加健壯
3.編寫的代碼更加易讀
4.編寫的代碼更加易于維護(hù)
弱類型和強(qiáng)類型
通常來說,越早的修復(fù)錯(cuò)誤,為之付出的代價(jià)就越小。強(qiáng)類型語言的編譯器可以在編譯時(shí)檢查某些錯(cuò)誤。而 JavaScript 是一門弱類型語言,其解釋器無法檢查類型錯(cuò)誤,但實(shí)踐表明:
1.強(qiáng)類型能夠避免的錯(cuò)誤并不是那些關(guān)鍵性錯(cuò)誤
2.弱類型能夠帶來靈活性,也無需背上強(qiáng)類型的包袱
JavaScript 相關(guān)標(biāo)準(zhǔn)
ECMA-262 標(biāo)準(zhǔn)定義了語言 ECMAScript。我們所熟知的 JavaScript 和 ActionScript 都是基于 ECMAScript 的。目前主流使用 ECMA-262 第五版,Google 的 V8 引擎就是對(duì)此的實(shí)現(xiàn)。
Hello JavaScript
JavaScript 是一門腳本語言,需要解釋器解釋執(zhí)行。你可以在瀏覽器中解釋執(zhí)行 JavaScript 或者直接使用 node.js,node.js 整合了 Google 的 V8 JavaScript 引擎。由于 node.js 使用非常方便,由此,這里我使用 node.js 來解釋執(zhí)行 JavaScript。現(xiàn)在看第一個(gè) JavaScript 程序:
// test.js
console.log("Hello JavaScript");
執(zhí)行此程序:
node test.js
語法
注釋
JavaScript 使用和 C++ 相同的注釋方式,// 用于單行注釋,/* */ 用于多行注釋。
數(shù)字類型
JavaScript 僅有一種數(shù)字類型,也就是 64 位浮點(diǎn)數(shù)。數(shù)字類型有兩個(gè)特殊的值 NaN 和 Infinity,NaN 的含義為 not a number(不是一個(gè)數(shù)),使用函數(shù) isNaN 檢查是否為 NaN,值 Infinity 表示無窮大。在 Math 對(duì)象中,有一組操作數(shù)字的方法,例如:Math.floor 方法用于向下取整。
字符串
字符串 literal 可以被包裹在單引號(hào)或者雙引號(hào)中,轉(zhuǎn)義字符使用 \(和其他很多語言沒有什么不同)。JavaScript 中每個(gè)字符都是兩個(gè)字節(jié),其使用 Unicode 字符集。字符串有一個(gè) length 屬性:
"Hello".length // 值為 5,注意不是 "Hello".length()
字符串是不可以改變的(和 Lua 一樣),除了這里說的 length 屬性,還有一些方法,例如:
'cat'.toUpperCase() === 'CAT'
語句
var 語句用于聲明局部變量,否則變量為全局變量,未初始化的變量的值為 undefined:
function f() {
var localVar = 123;
globalVar = 456;
var i; // i 的值為 undefined
};
f();
console.log(globalVar); // ok
console.log(localVar); // 錯(cuò)誤,localVar 沒有被定義
由 {} 包裹的一組語句被叫做語句塊(Block),和其他語言不同的是,JavaScript 中的函數(shù)會(huì)而塊不會(huì)創(chuàng)建新的作用域,例如:
{
var v = 123;
}
console.log(v); // ok
if 語句
if (expression)
statement
或者
if (expression)
statement1
else
statement2
或者
if (expression1)
statement1
else if (expression2)
statement2
else if (expression3)
statement3
else
statement4
if 語句通過判斷表達(dá)式的值為真或假來決定執(zhí)行或者跳過某些語句。在 JavaScript 中以下值為假(其他值均為真):
1.false
2.null
3.undefined
4.空字符串
5.0
6.NaN
if 中的 statement 可以是一個(gè)語句,也可以是一個(gè)語句塊。
switch 語句
switch (n) {
case 1: // 如果 n 等于 1
// 執(zhí)行代碼塊
break;
case 2: // 如果 n 等于 2
// 執(zhí)行代碼塊
break;
default: // 如果 n 不為 1 也不為 2
// 執(zhí)行代碼塊
break;
}
這里的 break 用于退出循環(huán)語句或者 switch 語句。在 JavaScript 中,比較兩個(gè)值是否相等有兩個(gè)操作符:
1.==(對(duì)應(yīng) != 操作符),相等,兩個(gè)操作數(shù)類型不同時(shí),此運(yùn)算符嘗試操作數(shù)類型轉(zhuǎn)換后再進(jìn)行比較,例如:
var x = 1;
x == 1; // true
x == "1"; // true
2.===(對(duì)應(yīng) !== 操作符),完全相等,比較兩個(gè)操作數(shù),不進(jìn)行操作數(shù)類型轉(zhuǎn)換,例如:
var x = 1;
x === 1; // true
x === "1"; // false
需要注意的是 NaN 和任何值都不相等,如果 x 為 NaN,那么 x !== x(僅對(duì) NaN 成立),我們可以這樣實(shí)現(xiàn) isNaN 函數(shù):
function isNaN(n) {
return n !== n;
}
上面 switch 語句,轉(zhuǎn)換為 if 語句為:
if (n === 1)
// ...
else if (n === 2)
// ...
else
// ...
while 和 do-while 語句
while (expression)
statement
如果 expression 為真則重復(fù)執(zhí)行 statement 直到 expression 為假。
do
statement
while (expression);
類似 while 循環(huán),只是先執(zhí)行 statement,然后再檢查條件 expression。
for 語句
for (initialize ; test ; increment)
statement
首先 initialize 被執(zhí)行一次(常用來初始化循環(huán)變量),然后進(jìn)行 test 條件測(cè)試(常用來測(cè)試循環(huán)變量),如果 test 條件為假則停止循環(huán),否則執(zhí)行 statement,然后執(zhí)行 increment(常用來更新循環(huán)變量),接著又進(jìn)行 test 條件測(cè)試,如此循環(huán)執(zhí)行下去。使用范例:
for (var i=0; i<5; ++i) {
console.log(i);
}
for 的另外一種形式被用于枚舉一個(gè)對(duì)象的所有屬性名:
for (variable in object)
statement
范例:
var obj = {
a: 1,
b: 2,
c: 3
};
for (var name in obj)
console.log(name);
需要注意的是,我們通過 hasOwnProperty 方法來檢查屬性名是該對(duì)象的,還是從原型鏈(prototype chain,prototype 會(huì)在 下一篇 中介紹)中找到的:
for (var in obj) {
if (obj.hasOwnProperty(var)) {
// ...
}
}
return 語句
return 語句用于讓函數(shù)返回一個(gè)值,如果函數(shù)沒有顯式的使用 return,那么返回 undefined:
function f() { }
var v = f(); // v === undefined
?: 條件操作符(JavaScript 中唯一的一個(gè)三元操作符)
?: 條件操作符在很多編程語言中都存在,在第一個(gè)操作數(shù)為真時(shí),操作符返回第二個(gè)操作數(shù)的值,否則返回第三個(gè)操作數(shù)的值,使用范例:
function abs() {
return x > 0 ? x : -x;
}
typeof 操作符
typeof 操作符用于獲取變量的類型,其返回值包括:
1.'number'
2.'string'
3.'boolean'
4.'undefined'
5.'function'
6.'object'
特別的 typeof null 返回的結(jié)果是 'object'。關(guān)于 typeof 的范例:
var a = typeof 'hello'; // a === 'string'
var b = typeof null; // b === 'object'
+ 操作符
+ 操作符在 JavaScript 中可以用于加法運(yùn)算,也可以用于字符串連接:
var message = 'hello' + 'world'; // message === 'helloworld'
&& 和 || 運(yùn)算符
&& 操作符在第一個(gè)操作數(shù)為假時(shí)返回第一個(gè)操作數(shù)的值,否則返回第二個(gè)操作數(shù)的值
|| 操作符在第一個(gè)操作數(shù)為真時(shí)返回第一個(gè)操作數(shù)的值,否則返回第二個(gè)操作數(shù)的值
var a = 1 && true; // a === true
var b = 1 || false; // b === 1
|| 的一個(gè)習(xí)慣用法:
name = name || 'unknown'; // 為 name 設(shè)定默認(rèn)值 'unknown'
相關(guān)文章
在Javascript里訪問SharePoint列表數(shù)據(jù)的實(shí)現(xiàn)方法
在進(jìn)行SharePoint訂制的時(shí)候經(jīng)常會(huì)遇到開發(fā)手段受限制的問題,比如通常公司都會(huì)限制服務(wù)器的訪問以及部署,很多開發(fā)都只能夠在客戶端來進(jìn)行2011-05-05js實(shí)現(xiàn)五星評(píng)價(jià)功能
本文主要介紹了js實(shí)現(xiàn)五星評(píng)價(jià)功能和印象評(píng)價(jià)功能的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03Javascript實(shí)現(xiàn)通過選擇周數(shù)顯示開始日和結(jié)束日的實(shí)現(xiàn)代碼
這篇文章主要介紹了Javascript實(shí)現(xiàn)通過選擇周數(shù)顯示開始日和結(jié)束日的實(shí)例代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-05-05JS在onclientclick里如何控制onclick的執(zhí)行
這篇文章主要介紹了JS在onclientclick里如何控制onclick的執(zhí)行的相關(guān)資料,需要的朋友可以參考下2016-05-05