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