JavaScript 是一種面向?qū)ο蟮膭?dòng)態(tài)語(yǔ)言,它包括類(lèi)型、運(yùn)算符、標(biāo)準(zhǔn)內(nèi)置( built-in)對(duì)象和方法。它的語(yǔ)法來(lái)源于 Java 和 C,所以這兩種語(yǔ)言的許多語(yǔ)法特性一樣適用于 JavaScript。需要注意的一個(gè)主要區(qū)分是 JavaScript 不支持類(lèi),類(lèi)這一概念在 JavaScript 通過(guò)對(duì)象原型(object prototype)得到延續(xù)(有關(guān) ES6 類(lèi)的內(nèi)容參考這里Classes)。另外一個(gè)主要區(qū)分是 JavaScript 中的函數(shù)也是對(duì)象,JavaScript 允許函數(shù)在包括可履行代碼的同時(shí),能像其他對(duì)象一樣被傳遞。
- Number(數(shù)字)
- String(字符串)
- Boolean(布爾)
- Symbol(符號(hào))(第6版新增)
- Object(對(duì)象)
- Function(函數(shù))
- Array(數(shù)組)
- Date(日期)
- Math(數(shù)學(xué)對(duì)象)
- RegExp(正則表達(dá)式)
- Null(空)
- Undefined(未定義)
- Error(問(wèn)題)類(lèi)型
1、number詳解
Javascript中采取全浮點(diǎn)計(jì)算(雙精讀64位)注意 !在某些運(yùn)算中會(huì)出錯(cuò) eg:0.1 + 0.2 = 0.30000000000000004我們也能夠使用JavaScript提供的Math內(nèi)置對(duì)象,和 內(nèi)置函數(shù)parseInt();另外JavaScript還提供了parseFloat(),但是它只支持解析十進(jìn)制數(shù)字在parseInto("123",10) //123 -->10的含義是十進(jìn)制
parseInt("010", 10); //10
parseInt("010"); // 8 如果沒(méi)有第2個(gè)參數(shù),那末以0開(kāi)頭就是8進(jìn)制 0x開(kāi)頭就是16進(jìn)制
parseInt("0x10"); // 16
如何把二進(jìn)制轉(zhuǎn)為整數(shù)值?
parseInt("10011",2);
當(dāng)?shù)谝粋€(gè)參數(shù)不是數(shù)字型字符串parseInt("hello", 10);
// NaNNaN是一個(gè)特殊值 用它與任何數(shù)字計(jì)算 結(jié)果都是NaN
另外 還有兩個(gè)特殊值 Infinity 和 -Infinity (正無(wú)窮和負(fù)無(wú)窮)用內(nèi)置函數(shù) isFinite( )可以判斷一個(gè)變量是不是為 Infinity -Infinity NaN
2、字符串
JavaScript 中的字符串是一個(gè) Unicode 字符序列
每個(gè)編碼單元由一個(gè) 16 位二進(jìn)制數(shù)表示。每個(gè) Unicode 字符由一個(gè)或兩個(gè)編碼單元來(lái)表示。
"hello".charAt(0); // "h"
"hello, world".replace("hello", "goodbye"); // "goodbye, world"
"hello".toUpperCase(); // "HELLO"
"hello".length; // 5
3、其他類(lèi)型(null 和 undefined)
null 的本質(zhì)是一個(gè)空值,必須使用 null 關(guān)鍵字才能訪(fǎng)問(wèn)
undefined 是一個(gè)未定義類(lèi)型的對(duì)象(也是一個(gè)對(duì)象),它表示一個(gè)未初始化的值,也就是還沒(méi)有被分配值。(JavaScript 允許聲明變量但不對(duì)其賦值,一個(gè)未被賦值的變量就是 undefined 類(lèi)型)
布爾型:(true / false)其他類(lèi)型對(duì)其轉(zhuǎn)化
flase , 0 , " " , NaN , null , undefined 都會(huì)在 JavaScript 需要一個(gè)布爾值變量的時(shí)候隱式轉(zhuǎn)換為 false (其他的都會(huì)轉(zhuǎn)化為 true)
4、變量
在JavaScript中聲明一個(gè)變量用var
var a;
var name = "simon";
var a;
var name = "simon";
在JavaScript中的語(yǔ)句塊中 是沒(méi)有作用域的
5、運(yùn)算符
JavaScript 的算術(shù)操作符包括 +、-、*、/ 和 % ——求余(與模運(yùn)算不同)。賦值使用 = 運(yùn)算符,另外還有一些復(fù)合運(yùn)算符,如 += 和 -=,它們等價(jià)于 x = x op y。
+可以用來(lái)連接字符串
"3" + 4 + 5; // 345
3 + 4 + "5"; // 75
1 === true; //false
123 === "123"; // false
123 == "123" // true
1 == true; // true
6、控制結(jié)構(gòu)
if()...else if()...else()
while()
do...while()
for( ; ; )/for( : )
- 短路與:var name = o && o.getName();
- 短路或:var name = otherName || "default";
- 3元運(yùn)算符:var allowed = (age > 18) ? "yes" : "no";
- 多重分支時(shí)可使用 基于一個(gè)數(shù)字或字符串的 switch 語(yǔ)句:(在 switch 的表達(dá)式和 case 的表達(dá)式是使用 === 嚴(yán)格相等運(yùn)算符進(jìn)行比較的:)
switch(action) {
case 'draw':
drawIt();
break;
case 'eat':
eatIt();
break;
default:
doNothing();
}
switch(1 + 3){
case 2 + 2:
yay();
break;
default:
neverhappens();
}
7、對(duì)象
對(duì)象的創(chuàng)建方式:
1.var obj = new Object();
2.var obj = {} --->對(duì)象字面量
var obj = {
name:"carrot",
"for":"Max",
details:{
color:"orange",
size:12
}
}
可以用鏈?zhǔn)皆L(fǎng)問(wèn):
obj.details.color;//orange
可以用中括號(hào)訪(fǎng)問(wèn):
obj [ detail ] [ color ];
對(duì)象類(lèi)型:(像是 Java 中的一個(gè)類(lèi))
function Person(name,age){
this.name = name;
this.age = age;
}
創(chuàng)建一個(gè) Person 的對(duì)象:
var You=new Person("zhangjiahui","23");
可用 You.name="ZJH"; 來(lái)賦值
可用 var name=You.name; 來(lái)賦值
obj["name"] = "Simon";