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