javascript基礎知識拾遺

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 運算符優先級

clipboard

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

相關文章
相關標籤/搜索