簡介
JavaScript,一種直譯式腳本語言涩维,是一種動態(tài)類型、基于原型的語言袁波,內(nèi)置支持類別瓦阐。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分篷牌,廣泛用于客戶端的腳本語言垄分,最早是在HTML網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能娃磺。然而現(xiàn)在JavaScript也可被用于網(wǎng)絡(luò)服務(wù)器薄湿,如Node.js。--維基百科
javascript能做很多事情:
- web前端偷卧,jQuery, Bootstrap, RequireJS等
- 移動Web開發(fā) (Mobile Web)豺瘤,jQuery Mobile, zepto.js
- Web后端,NodeJS
- Hybrid App听诸,PhoneGap, AppCan
- 桌面應(yīng)用坐求,如 node-webkit,heX,Electron
- 游戲,Cocos2d-js
- 超越web,JavaScript在物聯(lián)網(wǎng)的應(yīng)用
- 其他:瀏覽器插件等
基礎(chǔ)概念
標(biāo)識符
所謂標(biāo)識符是指變量晌梨、函數(shù)桥嗤、屬性的名字,或者函數(shù)的參數(shù)仔蝌。標(biāo)識符的書寫有幾個特征
- 區(qū)分大小寫
- 第一個字符必須是字母泛领、下劃線(_)、或者是$
- 后面的可以是字母敛惊、數(shù)字渊鞋、下劃線、$
命名規(guī)范
- 變量使用駝峰命名法瞧挤,第一個單詞首字母小寫锡宋,后面單詞首字母大寫
- 變量使用名詞,方法函數(shù)使用動詞開頭特恬,常量全部用大寫字母执俩,構(gòu)造函數(shù)首字母大寫
- 命名要包含語義
var firstName;
var isArray;
var PI;
function Person(){}
變量
變量是對“值”的引用,javascript 用var
來聲明變量癌刽。
var a = 1;
聲明變量未賦值役首,那么變量的值為 undefined尝丐。
var a;
a // undefined
變量提升
所謂變量提升,就是javascript引擎先解析代碼宋税,獲取所有聲明的變量摊崭,然后再一行一行地運行讼油,而所有的變量以及聲明語句杰赛,都會被提升到代碼的頭部。
console.log(a); //undefined
var a = 1;
語句
語句是為了完成某種任務(wù)的操作矮台,語句以分號結(jié)尾乏屯,一個分號就表示一個語句結(jié)束。
var a = 1+2;
var b = 'str';
注釋
注釋就是在程序開發(fā)中添加的標(biāo)注瘦赫,方便閱讀辰晕。js引擎會忽略這些語句。
javascript有兩種注釋:一種是單行注釋确虱,另一種是多行注釋含友。
//單行注釋
var a=1;//為變量a賦值
/*
多行注釋
*/
function getName(id){
return id;
}
數(shù)據(jù)類型
Javascript 中的每一值校辩,都屬于某一種數(shù)據(jù)類型窘问。Javascript的數(shù)據(jù)類型有六種(ES6新增了第七種Symbol)
- 數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)
- 字符串(string):字符組成的文本(比如"Hello World")
- 布爾值(boolean):true(真)和false(假)兩個特定值
- undefined:表示“未定義”或不存在,即此處目前沒有任何值
- null:表示空缺宜咒,即此處應(yīng)該有一個值惠赫,但目前為空
- 對象(object):各種值組成的集合
通常,我們將數(shù)值故黑、字符串儿咱、布爾值稱為原始類型(primitive type)的值,即它們是最基本的數(shù)據(jù)類型场晶,不能再細(xì)分了混埠。而將對象稱為合成類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成诗轻,可以看作是一個存放各種值的容器岔冀。至于undefined和null,一般將它們看成兩個特殊值概耻。
數(shù)據(jù)類型轉(zhuǎn)換
-
轉(zhuǎn)換函數(shù)
- toString() 轉(zhuǎn)換為字符串使套,在JavaScript中所有數(shù)據(jù)類型都可以轉(zhuǎn)換為string類型
var n1 = 12; var n2 = true; var a = [1, 2, 3]; var o = {}; function f(){} n1.toString(); //"12" n2.toString(); //"true" a.toString(); //"1,2,3" o.toString(); //"[object Object]" f.toString(); //"function f(){}"
- parseInt() 解析出一個string或者number類型的整數(shù)部分,如果沒有可以轉(zhuǎn)換的部分鞠柄,則返回NaN(not a number)
var n1 = "12"; var n2 = "23hello"; var n3 = "hello"; parseInt(n1); //12 parseInt(n2); //23 parseInt(n3); //NaN
- parseFloat() 解析出一個string的浮點數(shù)部分侦高,如果沒有可以轉(zhuǎn)換的部分,則返回NaN(not a number)厌杜。
var n1 = "1.2.3"; var n2 = "1.2hello" var n3 = "hello" parseFloat(n1); //1.2 parseFloat(n2); //1.2 parseFloat(n3); //NaN
- toString() 轉(zhuǎn)換為字符串使套,在JavaScript中所有數(shù)據(jù)類型都可以轉(zhuǎn)換為string類型
-
強制類型轉(zhuǎn)換
- Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型奉呛;
Boolean(123); //true Boolean(""); //false Boolean([]); //true Boolean({}); //true Boolean(null); //false Boolean(undefined); //false
- Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點數(shù))计螺;
Number("123"); //123 Number("123h"); //NaN Number(true); //1 Number(false); //0 Number(undefined); //NaN Number(null); //0 Number([]); //0 Number({}); //NaN
- String(value)——把給定的值轉(zhuǎn)換成字符串。
String(123); //"123" String([1,2]); //"1,2" String(undefined) //"undefined" String(null) //"null" String({}) //"[object Object]"
- Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型奉呛;
-
隱式轉(zhuǎn)換
- 數(shù)字+字符串:數(shù)字轉(zhuǎn)換為字符串
console.log(12+"12"); //1212
- 數(shù)字+布爾值:true轉(zhuǎn)換為1瞧壮,false轉(zhuǎn)換為0
console.log(12+true); //13
- 字符串+布爾值:布爾值轉(zhuǎn)換為true或false
console.log("hello"+true); //hellotrue
- 布爾值+布爾值
console.log(true+true); //2
- 數(shù)字+字符串:數(shù)字轉(zhuǎn)換為字符串
null和undefined
undefined 表示一種未知狀態(tài)登馒,聲明了但沒有初始化的變量,變量的值時一個未知狀態(tài)咆槽。訪問不存在的屬性或?qū)ο體indow.xxx)方法沒有明確返回值時陈轿,返回值是一個undefined.當(dāng)對未聲明的變量應(yīng)用typeof運算符時,顯示為undefined秦忿。
null表示尚未存在的對象,null是一個有特殊意義的值麦射。可以為變量賦值為null灯谣,此時變量的值為“已知狀態(tài)”(不是undefined)潜秋,即null。(用來初始化變量胎许,清除變量內(nèi)容峻呛,釋放內(nèi)存)
undefined==null //結(jié)果為true,但含義不同。
undefined===null //false,兩者類型不一致辜窑,前者為“undefined”钩述,后者為“object”