javascript基础知识拾遗

1 下面列出的值被当作假

false

null

undefined

''

0

NaN

其它所有值被当作是真

console.log(undefined || true); //true

console.log(0||true); //true

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 运算符优先级

javascript基础知识拾遗

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