Javascript中普通函数声明和内部返回块函数声明的区别

difference between normal function declaration and inside return block function declaration in Javascript

本文关键字:函数 声明 返回 区别 内部 Javascript      更新时间:2023-09-26

Javascript中普通函数声明和内部返回块函数声明的区别是什么?

代码下正常函数名:updatename,内部函数名:changeName

function person(firstName,lastName,age,eyeColor) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.updatename = function (name) {
        this.lastName = name;
    }
    return {
        'changeName' :  function (name) {
            this.lastName = name;
        }
    }; 
}
var myMother = new person("Sally","Rally",48,"green");
console.dir(myMother);
console.log(typeof(myMother.changeName));
console.log(typeof(myMother.updatename));
myMother.changeName("Doe");

如果你从函数返回一个对象,然后用new作为构造函数调用它,函数的原始this将被丢弃并被忽略并永远丢失。换句话说,this.firstName的值在这个世界上再也无法获得。你想通过返回对象字面量来完成什么?

JavaScript中正常函数声明和内部返回块函数声明的区别是什么?

不同之处在于(假设您指的是method声明)普通声明所做的是您通常想象的事情。

"内部返回块函数声明"覆盖并取消了this的原始值,而是用单个方法返回那个对象,这可能不是你想要的。