【前端学习笔记】函数定义、函数调用、this

时间:2021-02-23 03:39:05

函数定义的三种方式与特点:
1.函数声明;(特点:会被前置;重复定义函数时,最后一次定义有效。)
2.函数表达式;
3.函数实例化;(特点:只能访问本地作用域与全局作用域!!!)

/* 对象实例化定义函数的特点 */
 var person = {name:"刘德华", age:50};
 (function(){
   var person = {name:"刘德华", age:30};
   (function() {
     var person = {name:"刘德华", age:10};
     console.log(person.name+person.age+"岁");
   })()
 })();
 // -->输出10岁的刘德华,变量逐级向上回溯。
 
var person = {name:"刘德华", age:50};
(function(){
  var person = {name:"刘德华", age:30};
  var func = new Function("console.log(person.name+person.age+'岁');");
  func();
})(); //-->如果new Function()里面有10岁的刘德华,则为10岁的,否则直接50岁的。

 函数调用:

 1.函数调用模式; add(1)
 2.方法调用模式; myNumber.add(1)
 3.构造函数调用模式; new Function(...)

// /* 函数调用模式(this) */
function add(i,j){
  console.log(this); // --> window
  console.log(arguments); //--> [1,2]
  (function(){
      console.log(this); // --> window
  })();
  var sum = i+j;
  return sum;
}
add(1,2);

var myNumber = {
  value: 1,
  add: function(i){
  	console.log(this); // --> {value:1,add:function(){}}
    var helper = function(i){
        console.log(this); // --> window
          this.value += i; //所以这个实现不了;
    }
    helper(i);
  }
}
myNumber.add(1);