JavaScript查漏补缺

js函数定义的三种方式:

函数声明

function sum(a,b){
    return a+b
}

函数表达式

var sum = function(a,b){
    return a+b
}

Function构造函数

var sum = new Function('a','b','return a+b')//不推荐使用,影响函数解析性能
var foo;
var x = foo();
foo = function foo(){
}

当执行到x = foo();浏览器会报TypeErro:foo is not a function

注意:函数声明可以提前,但是函数表达式无法提前。

JS基本数据类型:

Undefined, Null, Boolean, Number, String, Symbol

Object属于复杂数据类型

关于This

var color = 'green'p;
var test = {
      color : 'blue',
      getColor : function(){
        var color  = 'red';
        alert(this.color);
    }  
}

var getColor = test.getColor;
getColor();
test.getColor();

输出结果:green, blue

知识点一:js函数调用时加括号和不加括号的区别.不加括号相当于把函数代码赋给等号左边,加括号是把函数返回值赋给等号左边,

知识点二:js中this的用法,this总是指向调用它的对象,倒数第二行的getColor为windows调用的,倒数第一行的getColor是test4399对象调用的.参考http://www.cnblogs.com/painsOnline/p/5102359.html
 
call和apply
call和apply的作用相同,但是传入的参数不同,apply传入的是数组
function add(c,d){
    return this.a+this.b+c+d;
}
var o = {a:1,b:2};
add.call(o,3,4);//1+2+3+4
add.apply(o,[3,4]);//1+2+3+4
原文地址:https://www.cnblogs.com/zyxiaohuihui/p/9466167.html