一、變量
1.標(biāo)識(shí)符
標(biāo)識(shí)符(變量名、函數(shù)名等)的定義需要遵循一定的規(guī)則, 具體如下
(1)由大小寫字母、數(shù)字、下劃線和美元符號(hào)($)組成,如str、 arr3、 get_ name、$a。
(2)不能以數(shù)字開頭,如56name是非法標(biāo)識(shí)符。 ?
(3)嚴(yán)格區(qū)分大小寫,如it與IT表示兩個(gè)不同的標(biāo)識(shí)符。
(4)不能使用Java中的關(guān)鍵字命名,如var作為變量名是不合法的。
(5)要盡量做到“見其名知其意”,如name表示名稱,age表示年齡等。
注:當(dāng)標(biāo)識(shí)符中需要多個(gè)單詞進(jìn)行表示時(shí),常見的表示放式有下劃線法(user_name)、駝峰法(userName)和帕斯卡法(UserName)。
2.保留關(guān)鍵字
保留關(guān)鍵字是指在JavaScript語言中被事先定義好并賦予特殊含義的單詞,不能作為變量名和函數(shù)名使用,以下列舉的是ES5中規(guī)定的一些關(guān)鍵字:
ES5中的關(guān)鍵字
break,case,catch,class, const,continue
debugger,default,delete, do, else,export
extends, false,finally,for ,function,if
import, in,instanceof, new,null, return
super,switch,this,throw, try, true
typeof,var, void,while, with, yield
未來保留關(guān)鍵字
abstract,arguments,await,byte,boolen,char
double,enum,eval,final ,float, goto
implements, int ,interface, let ,long,native
package,private,protected,public,short ,static
synchronized,throws,transient,volatile
注:!!!
for(let i=0;i<3;++i){ ??//let關(guān)鍵字
}
console.log(i); ? ? ? //輸出結(jié)果:i is not defined
for(var i=0;i<3;++i){ ?//var關(guān)鍵字
}
console.log(i); ? ? //輸出結(jié)果:3
3.變量的使用
變量可以看作儲(chǔ)存數(shù)據(jù)的容器,JavaScript中的變量用var關(guān)鍵字聲明,變量命名規(guī)則與標(biāo)識(shí)符相同,代碼演示變量的聲明:
var sales;
var hits,hot,NEWS;
var room_101,room102;
var $name,$age;
注:未賦初值的變量,默認(rèn)值為undefined
4.變量的賦值
聲明完成后就可以為變量賦值,也可以在聲明變量的同時(shí)為變量賦值,示例如下:
var unit,room;? ? ? ? ? ? ? //聲明變量
unit=3;? ? ? ? ? ? ? ? ? ? ? ? ? ? //為變量賦值
room=1001;? ? ? ? ? ? ? ? ? ? //為變量賦值
var fname='Tom',age=12;? //聲明變量的同時(shí)賦值
5.定義常量
用const關(guān)鍵字,實(shí)現(xiàn)常量的定義。習(xí)慣上常量名用大寫字母表示。
var r=6;
const PI =3.14;
const CIR=2*PI * r;
console.log('CIR='+CIR); //結(jié)果:CIR=37.68
注:常量在賦值時(shí)可以是具體的具體的數(shù)據(jù),也可以是表達(dá)式的值或變量。常量一旦被賦值就不能被改變,并且常量在聲明時(shí)必須為其指定某個(gè)值。
二、數(shù)據(jù)類型
1、數(shù)據(jù)類型分類

2.1、布爾型(只有true和false兩個(gè)值),示例代碼:
var flag1=true; ? ? ? //為變量賦布爾類型值true
var flag2=false; ?//為變量賦布爾類型值false
2.2、數(shù)值型(JavaScript中的數(shù)值型不區(qū)分整數(shù)和浮點(diǎn)數(shù),所有數(shù)字都是數(shù)值型),示例代碼:
var oct=032; ? //八進(jìn)制26
var dec=26; ? ?//十進(jìn)制26
var hex=0x1a; ?//十六進(jìn)制26
var fnum1=7.26; ?//標(biāo)準(zhǔn)格式
var fnum2=-6.24;??//標(biāo)準(zhǔn)格式
var fnum3=3.14E6; ?//科學(xué)計(jì)數(shù)法格式 3.14*10^6
var fnum4=8.96E-3; ?//科學(xué)計(jì)數(shù)法格式 8.96*10^-3
注:JavaScript中的NaN表示非數(shù)值(Not a Number),沒有確切的值,僅表示非數(shù)值型的一個(gè)范圍。
2.3、字符型(字符型數(shù)據(jù)包含在單引號(hào)或雙引號(hào)中),示例代碼:
var slogan='Knowledge';
var str="the sky is blue.";
var color='"red"blue'; //
var food="'pizza'bread":
var num=' ',total=" ";
2.4、空型(Null)
由于JavaScript對(duì)大小寫敏感,因此變量的值只有是null時(shí)才表示空型(Null)
2.5、未定義型(Undefined)
用于聲明的變量未被初始化時(shí),變量的默認(rèn)值為undefined。undefined表示沒有為變量設(shè)置。注:null和undefined與空字符串("")和()都不等。
3.1、數(shù)據(jù)類型檢測(cè)
var num1=12,num2='34',sum=0; //聲明變量并賦值
sum=num1+num2; ? ? ? ? ? ? ? ? ? ? ? ?//變量相加
console.log(sum); ? ? ? ? ? ? ? ? ? ? ? ? ? ?//輸出結(jié)果:1234
注:這里的相加運(yùn)算將兩個(gè)變量的值進(jìn)行了拼接而非相加運(yùn)算,是因?yàn)橹挥挟?dāng)參與運(yùn)算的變量都是數(shù)值型時(shí)才能進(jìn)行相加運(yùn)算。
3.2、1)、typeof操作符(用于檢測(cè)變量是否符合期望的數(shù)據(jù)類型),以上述示例參與運(yùn)算的變量及運(yùn)算結(jié)果的數(shù)據(jù)類型為例來演示:
console.log(typeof num1); ?//輸出結(jié)果:number
console.log(typeof num2); ? //輸出結(jié)果:string
console.log(typeof sum); ? ? //輸出結(jié)果:string
注:再利用typeof 檢測(cè)null的類型時(shí),返回的是object而不是null。
2)Object.prototype.toString.call()(對(duì)象原型的擴(kuò)展函數(shù),更精確的區(qū)分?jǐn)?shù)據(jù)類型),代碼演示:
var data=null; ?//待判斷的數(shù)據(jù)
var type='Null'; ?//數(shù)據(jù)類型,如Boolean,String,Undefined等
Object.prototype.toString.call(data)=='[object]'+type+']' ?//若是指定的type型,返回true,否則返回false
4.1、轉(zhuǎn)布爾型Boolean()
Boolean()函數(shù)會(huì)將任何非空字符串和非零的數(shù)值轉(zhuǎn)換為true,將空字符串、0、NaN、undefined和null轉(zhuǎn)換為false。
4.2、轉(zhuǎn)數(shù)值型 (可以用Number()函數(shù) ,parseInt()函數(shù)或parseFloat()函數(shù)對(duì)參與運(yùn)算的數(shù)據(jù)進(jìn)行轉(zhuǎn)換),代碼演示:
var num1=prompt('第一個(gè)數(shù)據(jù):'); ? //假設(shè)輸入:123abc
var num2=prompt('第二個(gè)數(shù)據(jù):'); ? //假設(shè)輸入:456
console.log(num1+num2); ?//結(jié)果:123abc456
console.log(parseInt(num1)+parseInt(num2)); ?//結(jié)果:579
注:轉(zhuǎn)數(shù)值型的函數(shù)在使用時(shí)有一定的區(qū)別,具體見下表

上表中的所有函數(shù)在轉(zhuǎn)換純數(shù)字時(shí)會(huì)忽略前導(dǎo)零,如"0123"會(huì)被轉(zhuǎn)為123.
parseFloat()會(huì)將數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)數(shù)(可理解為小數(shù));parseInt()會(huì)直接省略小數(shù)部分,返回?cái)?shù)據(jù)的整數(shù)部分,并可以通過第二個(gè)參數(shù)設(shè)置轉(zhuǎn)換的進(jìn)制數(shù),代碼示例:
console.log(parseInt('123abc')); ?//輸出結(jié)果:123
console.log(parseInt('F',16)); ? ? ? ?//輸出結(jié)果:15
parseInt()的第二個(gè)參數(shù)表示待轉(zhuǎn)換字符串的進(jìn)制數(shù),默認(rèn)為10,表示十進(jìn)制.
4.3 轉(zhuǎn)字符型 ( String(),toString())
String() 可以將任意類型轉(zhuǎn)換為字符串 ; ?toString() 除了null和undefined沒有toString()方法外,其他數(shù)據(jù)類型都可以完成字符的轉(zhuǎn)換,代碼演示:
var num1=num2=num3, num4=26;
console.log(String(12)); ? ?//輸出結(jié)果:12
console.log(num1+num2+num3.toString()); ?//輸出結(jié)果:84
console.log(num4.toString(2)); ? //輸出結(jié)果:11010
4.4 賦值運(yùn)算符(特別的)

4.5 比較運(yùn)算符 (這里只特別說:"==","!=","===","!==")
"=="與"!=",只比較數(shù)據(jù)的值是否相等 ; "==="與"!==",不僅比較數(shù)據(jù)的值是否相等,還要比較數(shù)據(jù)的類型是否相等.
4.6位運(yùn)算符
