1 下面列出的值被看成假javascript
falsejava
null閉包
undefinedapp
''函數
0this
NaNspa
其它全部值被看成是真 對象
console.log(undefined || true); //trueblog
console.log(0||true); //trueip
console.log(''||true); //true
console.log(false||true); //true
console.log(null||true); //true
console.log(NaN||true); //true
console.log(undefined&&true); //undefined
console.log(0&&true); //0
console.log(null&&true); //null
console.log(' '&&true); //空字符串
console.log(NaN&&true); //NaN
console.log(false&&true); //false
console.log(undefined || 0); //0
console.log(0||undefined); //undefined
console.log(''== 0);//true
console.log(''== '0');//false
console.log(0=='0')//true
console.log(false=='false')//false
console.log(false==false);//true
console.log('false'=='false');//true
console.log(false=='0');//true
console.log(false==null);//false
console.log(false==undefined);//false
console.log(null==undefined);//true
2 javascript 5種簡單數據類型
Undefined 類型
Boolean 類型
Number 類型
String類型
Object 類型
var a = new Number();
var c = new Boolean();
var d = undefined;
var e = new String();
var f = new Object();
console.log(a,b,c,d,e,f);//Number {}Boolean {} undefined String {}Object {}
3 typeof操做符
「undefined」 ---------- 若是值未定義 Undefined
「boolean」 ---------- 若是這個值是布爾值 Boolean
「string」 ---------- 若是這個值是字符串 String
「number」 ---------- 若是這個值是數值類型 Number
「object」 ---------- 若是這個值是對象或null Object
「function」 ---------- 若是這個值是函數 Function
var a = null;
var b ='';
var c =0;
var d = [1,2];
var c = function(){}
var e = false;
var f;
console.log(typeof a,typeof b,typeof c,typeof d,typeof e,typeof f); //object string function object boolean undefined
4 運算符優先級
5 函數調用模式(4種)
(1)方法調用模式
當一個函數被保存爲對象的一個屬性時,稱它爲一個方法
var person = {
say:function(){
alert('hi!');
}
}
person.say();
(2)函數調用模式
當一個函數並不是一個對象的屬性時,那麼它被看成一個函數來調用
function say(){
alert('hi!');
}
var a= say();
(3)構造器調用模式
function Person(){
this.say = function(){
alert('hi');
}
}
var p = new Person();
(4)call/apply調用模式
var arr = [1,2];
function add(){
return arguments[0]+arguments[1];
}
var sum = add.apply(null,arr);
console.log(sum);//3
6 return語句
若是沒有return時,函數默認返回undefined,若是用構造器調用模式,則返回函數的this對象。
var add = function(a,b){
a+b;
}
console.log(add()); //返回undefined
var a = new add();
console.log(a);// 返回this對象
7 try/catch語句
try{
console.log(abc);
}catch(e){
console.log(e.name+":"+e.message); //ReferenceError:abc is not defined
}
8 閉包
下面這種狀況,獲得的值都是5
var arr =[];
for(var i=0;i<5;i++){
arr[i] = function(){
console.log(i);
};
}
arr[0](); //5
arr[1](); //5
arr[2](); //5
arr[3](); //5
arr[4](); //5
解決方法
var arr =[];
for(var i=0;i<5;i++){
(function(i){
arr[i] = function(){
console.log(i);
};
}(i))
}
arr[0](); //0
arr[1](); //1
arr[2](); //2
arr[3](); //3
arr[4](); //4