一.數(shù)據(jù)類型
1.原始類型
number string boolean null undefined object 對象
2.隱式轉換
等于和嚴格等于
等于==
在類型不同時會嘗試轉換
嚴格等于===
3.包裝對象
4.類型檢測
方法:
1.typeof
typeof 100
"number"
typeof true
"boolean"
typeof function
"function"
typeof undefined
"undefined"
typeof new object()
"object"
typeof [1,2]
"object"
typeof NaN
"number" NaN 就是not number
typeof null
"object"
遇到null失效
2.obj instanceof Object
[1,2]instanceof Array===true
new Object() instanceof Array===false
不同的window或ifeame中不可以使用
3.object.prototype.toString
Object.prototype.toString.apply([])==="[object Array]"
IE6,7有bug
4.constructor
5.duck type
二.表達式和運算符
1.表達式
原始表達式
數(shù)組表達式
new Array(1,2)
[1,2]
{X:1,y:2} var o = new Object();o.x=1;o.y=2;
函數(shù)表達式
var fe = function(){};
屬性訪問表達式
var o ={x:1}
o.x o['x']
調用表達式
func()
對象創(chuàng)建表達式
new Func(1,2)
2.運算符
條件運算符
var val=true?1:2 //val = 1
逗號運算符
var val =(1,2,3); //val = 3
將逗號隔開的表達式都進行運算瓜晤,然后取最右邊的值锥余。
Delete運算符
delete obj.x; var obj = {x:1} obj.x; //1 delete obj.x; obj.x //undefined
in 運算符
window.x = 1; 'x' in window /true
instanceof,typeof運算符
{} instanceof Object //true
typeof 10===number
new運算符
this 運算符
this;//Windows(瀏覽器)
var obj =={ func:function(){return this;} }; obj.func();//obj
void 運算符
只會返回undefined;
運算符優(yōu)先級
圖
三.語句和嚴格模式
語句
1.blick 塊語句 {}
用于組合0~多個語句。塊語句用一對花括號定義
沒有塊級作用域
2.var 聲明語句
var a=b=1;
b會被聲明為全局變量
聲明多個變量使用逗號隔開
即var a=1,b=1; Atom.lnk
3.try catch 語句
這是一個異常捕獲語句痢掠。
try{ throw "test"; }catch(ex){ console.log(ex);//test }finally{ console.log("finally") }
try 如果拋出異常就執(zhí)行catch驱犹。不管如何都執(zhí)行finally
4.function 語句
通過function定義函數(shù)對象 被稱為函數(shù)聲明
通過定義變量為函數(shù)表達式
函數(shù)前置(函數(shù)聲明被優(yōu)先處理)
5.for in 語句
var p; var obj={x:1,y:2} for(p in obj){ }
1.順序不確定
2.enumerablewei為false時不會出現(xiàn)
3.for in對象屬性時受原型鏈影響;
6.switch語句
break
7.循環(huán)語句 while do while for
8.with 語句
修改當前作用域
with({x:1}){ console.log(x); }
深層次調用
不建議使用
嚴格模式下禁用
嚴格模式
"use strict "