Javascript 基础之函数

函数是Javascript 中很重要的对象,JS 提供三种方式实现函数。

1. function 关键字

1.1 定义function 函数

function student() {
    this.name = 'spursy';
    this.age = 20;
}
var stu = new student();
console.log(stu instanceof  student); // true
console.log(typeof(student));   // function
console.log(typeof(stu));   // object

1.2 自定义匿名类

var stu = new function() {
    this.name = 'spursy';
    this.age = 20;
};
console.log(typeof(stu));   // object

2. 系统内置函数对象(Function)来构建一个函数

/**
 * Demo 1
 */
let str = 'return ' + '` This is ${name}.`';
let fun = new Function('name', str);
var result = fun("Spursy");
console.log(result); // This is Spursy.
/**
 * Demo 2
 */
let str = '(name) => ` This is ${name}.`';
let fun = eval.call(null, str);
var result = fun("Spursy");
console.log(result); // This is Spursy.

3. ES6 箭头函数(arrow function)

var numbers = [1,3,5,7,9];
var result = numbers.map((number) => number * 3);
console.log(result);  // [3, 9, 15, 21, 27]

ES6的箭头函数省略了 function 关键字,并在参数后面添加了 ‘=>’.

(async() => {
     await result.total3();  // 箭头函数与async/ await 的结合
})

箭头函数不绑定this
a. 由于 this 已经在词法层面完成了绑定,通过 call() 或 apply() 方法调用一个函数时,只是传入了参数而已,对 this 并没有什么影响。
b. 在箭头函数内部使用 var that = this, debug 发现 that 指向为undefined。

var adder = {
  base : 1,
    
  add : function(a) {
    var f = v => v + this.base;
    return f(a);
  },

  addThruCall: function(a) {
    var f = v => v + this.base;
    var b = {
      base : 2
    };
            
    return f.call(b, a);
  }
};

console.log(adder.add(1));         // 输出 2
console.log(adder.addThruCall(1)); // 仍然输出 2(而不是3 ——译者注)
function multiply (x, y) {
    return x * y;
}
var result = {
    value: 3,
    total: () => 
    {
        var that = this;  // that 指向undefined
        that.value =  multiply(that.value, that.value);
    } 
};
(async() => {
     await result.total3();
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文是大神廖雪峰的JavaScript教程学习笔记。并不是教程,如有需要,请前往廖雪峰大神大博客. 一、函数定义和...
    0o冻僵的企鹅o0阅读 509评论 1 3
  • 函数函数定义与调用变量作用域全局变量方法高阶函数闭包箭头函数$generator$ 函数 函数定义与调用 定义函数...
    染微言阅读 600评论 0 5
  • 函数就是最基本的一种代码抽象的方式。 定义函数function abs(x) {if (x >=0){return...
    _我和你一样阅读 458评论 0 0
  • Redis 和 Mongo 都属于 No-SQL类型的数据库,他们的区别,联系是什么呢?看了一些文章,特总结如下。...
    Richardo92阅读 13,036评论 2 9