Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在执行控制台时,console.log是作为';返回的函数中的对象;未定义';?(了解创建阶段、执行阶段)_Javascript_Object_Undefined_Executioncontext - Fatal编程技术网

Javascript 为什么在执行控制台时,console.log是作为';返回的函数中的对象;未定义';?(了解创建阶段、执行阶段)

Javascript 为什么在执行控制台时,console.log是作为';返回的函数中的对象;未定义';?(了解创建阶段、执行阶段),javascript,object,undefined,executioncontext,Javascript,Object,Undefined,Executioncontext,我试图理解执行上下文、创建阶段和执行阶段 我在想,谁能帮我弄明白为什么 console.log(thisFunction.ojbect1); 返回-'未定义' 我会认为,在创建阶段之后,当变量被指定为“未定义”时,执行阶段将运行,在执行阶段,变量将被对象填充 那么为什么我得到的是“object1”的“undefined”,而不是整个对象 非常感谢。代码如下 var thisFunction = function(){ var object1 = { firstname:

我试图理解执行上下文、创建阶段和执行阶段

我在想,谁能帮我弄明白为什么

console.log(thisFunction.ojbect1);
返回-'未定义'

我会认为,在创建阶段之后,当变量被指定为“未定义”时,执行阶段将运行,在执行阶段,变量将被对象填充

那么为什么我得到的是“object1”的“undefined”,而不是整个对象

非常感谢。代码如下

var thisFunction = function(){
    var object1 = {
        firstname: 'Mark',
        printName: function(){
        console.log(this.firstname);
        }
    };

    object1.printName();
};

thisFunction();
console.log(thisFunction.object1);
“Object1”不是“thisFunction”的属性,因此不能调用它。“Object1”是在“thisFunction”范围内创建的变量

您只能访问父作用域的变量

如果您想更多地了解函数作用域,这里有一些有趣的阅读资料

“Object1”不是“thisFunction”的属性,因此不能调用它。“Object1”是在“thisFunction”范围内创建的变量

您只能访问父作用域的变量

如果您想更多地了解函数作用域,这里有一些有趣的阅读资料

  • 您需要使用this将变量分配给函数对象this function
  • 然后您需要使用new来创建此函数的对象
  • 除以下情况外,此操作与您的操作相同:

        var thisFunction = function(){
    
        this.object1 = {
            firstname: 'Mark',
            printName: function(){
            console.log(this.firstname);
            }
        };
    
        this.object1.printName();
    };
    
    var tf = new thisFunction();
    console.log(tf.object1);
    
    使用
    typeof
    可以帮助您更好地理解对象和函数之间的区别:

    console.log(typeof thisFunction);
    console.log(typeof tf);
    console.log(typeof tf.object1);
    console.log(typeof tf.object1.firstname);
    
    输出:

    功能
    对象
    对象

    请参见中的示例

  • 您需要使用this将变量分配给函数对象this function
  • 然后您需要使用new来创建此函数的对象
  • 除以下情况外,此操作与您的操作相同:

        var thisFunction = function(){
    
        this.object1 = {
            firstname: 'Mark',
            printName: function(){
            console.log(this.firstname);
            }
        };
    
        this.object1.printName();
    };
    
    var tf = new thisFunction();
    console.log(tf.object1);
    
    使用
    typeof
    可以帮助您更好地理解对象和函数之间的区别:

    console.log(typeof thisFunction);
    console.log(typeof tf);
    console.log(typeof tf.object1);
    console.log(typeof tf.object1.firstname);
    
    输出:

    功能
    对象
    对象


    参见

    object1
    此函数的局部变量
    因此不能在
    此函数
    的范围外隐式访问
    object1
    此函数
    的局部变量,因此不能在
    此函数
    的范围外隐式访问。谢谢,还有一些学习要做,以充分了解引擎盖下发生了什么与您的解决方案。感谢您的反馈!请点击向上箭头来更新我的答案。谢谢,为此,我们还有一些学习要做,以充分了解引擎盖下发生的事情和您的解决方案。谢谢您的反馈!请点击向上箭头来更新我的答案。谢谢!我想我的问题是,为什么Object1被分配了变量“Undefined”。i、 为什么它在创建阶段被指定为“未定义”,而在执行阶段却从未被指定对象?我在这里可能没有任何意义:)每次调用
    thisFunction
    时,都会创建一个新的作用域。此范围具有局部变量
    object1
    。因此,它在
    此函数
    之外未定义。键入
    thisFunction.object1
    时,不会调用
    thisFunction
    。相反,您将
    thisFunction
    视为一个对象,并查找名为
    object1
    的属性。这不起作用,因为
    thisFunction
    是一个函数。您提到:“thisFunction是一个函数”,我想这就是我感到困惑的地方。函数不是javascript中的对象吗?函数不是对象,但它们可以通过使用
    new
    关键字生成对象。非常感谢Lars Kristian。然后,我被我正在学习的人弄糊涂了,就像他们说的——“功能就是对象”。我从Mozilla功能页面上读到这一行在JavaScript中,函数是一级对象,因为它们可以像任何其他对象一样具有属性和方法。”我头晕目眩:汉克斯!我想我的问题是,为什么Object1被分配了变量“Undefined”。i、 为什么它在创建阶段被指定为“未定义”,而在执行阶段却从未被指定对象?我在这里可能没有任何意义:)每次调用
    thisFunction
    时,都会创建一个新的作用域。此范围具有局部变量
    object1
    。因此,它在
    此函数
    之外未定义。键入
    thisFunction.object1
    时,不会调用
    thisFunction
    。相反,您将
    thisFunction
    视为一个对象,并查找名为
    object1
    的属性。这不起作用,因为
    thisFunction
    是一个函数。您提到:“thisFunction是一个函数”,我想这就是我感到困惑的地方。函数不是javascript中的对象吗?函数不是对象,但它们可以通过使用
    new
    关键字生成对象。非常感谢Lars Kristian。然后,我被我正在学习的人弄糊涂了,就像他们说的——“功能就是对象”。我从Mozilla功能页面上读到这一行在JavaScript中,函数是一级对象,因为它们可以像任何其他对象一样具有属性和方法。”我的头在旋转:D