Javascript 我对java脚本函数感到困惑

Javascript 我对java脚本函数感到困惑,javascript,function,Javascript,Function,这是一些代码 var name = 'ali'; function say() { alert(name); } 因此,这将提醒'ali',因为名称函数现在由全局对象拥有,下面的代码 var oobj { var name: 'raziq', say:function () { alert (name); } } oobj.say(); 现在say函数归oobj对象所有,因此name属性应该提醒'raziq' 而不是“阿里”。顺便说一下,我知道这个关键字的用法

这是一些代码

var name = 'ali';

function say() {
  alert(name);
}
因此,这将提醒'ali',因为名称函数现在由全局对象拥有,下面的代码

var oobj  { 
  var name: 'raziq',
  say:function () {
    alert (name);
  }
}

oobj.say();

现在say函数归oobj对象所有,因此name属性应该提醒'raziq' 而不是“阿里”。顺便说一下,我知道这个关键字的用法

我的问题是什么会被提醒和更新---

基本上,一个是变量,一个是属性。你可以通过两种不同的方式访问它们

在您的问题中,您声明了一个变量
名称
和一个函数。在任何时候,如果您没有明确地重新定义
名称
,那么它将始终是该值

在您的情况下,当您这样做时,您认为您正在重新定义
name

var oobj = {
    name: 'raziq'
但你不是。您正在声明oobj对象的属性。i、 e.如果我试图从对象外部警告name,它将查找name的变量声明,并找到您设置为“ali”的全局变量。为了访问
属性
名称,您必须告诉它找到它的“路径”。路径是
oobj.name

你在一个物体里面,所以你不知道;t使用
var=
。您使用逗号
,只需执行
say:function(){


也许你在找这个

var oobj = { 
    name : 'raziq',
    say : function (){
            alert (oobj.name);
        }
}

oobj.say();

查看一个和一个。

因为Jeff已经给出了正确的答案,我只想指出,即使是第一个示例也没有按预期工作。内部的
警报将向您显示
名称
功能

因此:

function name() {
  alert(name);
}

name()
将提醒消息:

function name() {
  alert(name);
}

oops抱歉输入错误问题是什么?第二个示例包含无效语法。您还应该避免在同一范围内使用与命名函数同名的变量。因此,name属性应提醒“raziq”而不是“ali”。在oobj对象中,因为函数属于oobjyes,但为什么在函数由于
name
oobj
对象的一个参数,因此该对象拥有该名称。您也可以使用
this.name
而不是
oobj.name
当它是oobj对象的一部分时,我们为什么要关心“this”和oobj的名称?在这种情况下,这里有一些(非常)有用的信息(在javascript中使用作用域和闭包)更新以尝试并解释。这有帮助吗?在某种程度上是的,但我的问题是,当我提醒oobj对象中的name属性时,它应该提醒'raziq',因为我在对象内部,并且函数也属于Objective。在您的帖子中,您没有提醒属性。您是在告诉它提醒变量名。变量名设置为'ali'。属性必须通过在对象外部使用
oobj.name
或在对象内部使用
this.name
来访问。如果将其更改为代码示例中的值,它将执行您想要的操作,因为我告诉它通知name属性而不是name变量
function name() {
  alert(name);
}