Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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代码处理中的混乱_Javascript - Fatal编程技术网

javascript代码处理中的混乱

javascript代码处理中的混乱,javascript,Javascript,代码 输出:ReferenceError:未定义myvar 根据我的理解,javascript逐行检查变量及其范围。记住这一点,因为myvar存在于全局范围中,所以下面的内容不应该打印“未定义”吗?不应该,要打印未定义的,您需要首先在全局范围中定义它 在函数本身执行之前,为函数内部的变量赋值并不意味着什么 var-myvar; 函数hi(){ myvar=‘局部变量’; } console.log(myvar)不应该,要打印未定义的,您需要首先在全局范围内定义它 在函数本身执行之前,为函数内部

代码

输出:ReferenceError:未定义myvar


根据我的理解,javascript逐行检查变量及其范围。记住这一点,因为myvar存在于全局范围中,所以下面的内容不应该打印“未定义”吗?

不应该,要打印未定义的,您需要首先在全局范围中定义它

在函数本身执行之前,为函数内部的变量赋值并不意味着什么

var-myvar;
函数hi(){
myvar=‘局部变量’;
}

console.log(myvar)不应该,要打印未定义的,您需要首先在全局范围内定义它

在函数本身执行之前,为函数内部的变量赋值并不意味着什么

var-myvar;
函数hi(){
myvar=‘局部变量’;
}
console.log(myvar)问题:myvar抛出一个
ReferenceError
函数hi(){
myvar=‘局部变量’;
}
console.log(myvar)问题:myvar抛出一个
ReferenceError
函数hi(){
myvar=‘局部变量’;
}

console.log(myvar)这是因为变量范围是函数的局部范围。首先尝试在外部声明变量

function hi() {
    myvar = 'local variable';
}
console.log(myvar);

这是因为变量范围是函数的局部范围。首先尝试在外部声明变量

function hi() {
    myvar = 'local variable';
}
console.log(myvar);

可以通过三种方式声明变量:

  • 使用关键字var.例如,var x=42。此语法可用于声明局部变量和全局变量

  • 只需给它赋值。例如,x=42。如果此表单在函数外部使用,则声明一个全局变量。它会生成一个严格的JavaScript警告。你不应该使用这个变体

  • 使用关键字let。例如,设y=13。此语法可用于声明块作用域局部变量。请参阅下面的变量范围

您的函数将工作,因为它满足方法#2,通过为变量赋值来声明变量

console.log(myvar)
将不起作用,因为
myvar
从未通过上述三种方式中的任何一种进行声明。因此,您会得到一个
ReferenceError

根据我的理解,javascript是逐行进行的,检查 变量及其范围。记住这一点不应该 以下打印“未定义”,因为myvar存在于全局范围内

不,函数没有被调用,因此函数中的代码没有运行,因此变量从未被创建。如果你有
myvar='localvariable'在功能之外,它将工作。

可以通过三种方式声明变量:

  • 使用关键字var.例如,var x=42。此语法可用于声明局部变量和全局变量

  • 只需给它赋值。例如,x=42。如果此表单在函数外部使用,则声明一个全局变量。它会生成一个严格的JavaScript警告。你不应该使用这个变体

  • 使用关键字let。例如,设y=13。此语法可用于声明块作用域局部变量。请参阅下面的变量范围

您的函数将工作,因为它满足方法#2,通过为变量赋值来声明变量

console.log(myvar)
将不起作用,因为
myvar
从未通过上述三种方式中的任何一种进行声明。因此,您会得到一个
ReferenceError

根据我的理解,javascript是逐行进行的,检查 变量及其范围。记住这一点不应该 以下打印“未定义”,因为myvar存在于全局范围内


不,函数没有被调用,因此函数中的代码没有运行,因此变量从未被创建。如果你有
myvar='localvariable'在功能之外,它将工作。

可能重复@musefan,但实际上它不会打印
未定义的
。问题是为什么它没有记录
未定义的
(相反,他有一条错误消息)还要注意,当使用严格模式时,隐式全局将抛出此错误。@musefan他的问题清楚地表明,他想了解为什么他收到
输出:ReferenceError:myvar未定义
,而不是
未定义
@musefan,当你说“它打印未定义,因为”时,这意味着你没有尝试它。代码不打印
undefined
所有可能的@musefan副本,实际上它不打印
undefined
。问题是为什么它没有记录
未定义的
(相反,他有一条错误消息)还要注意,当使用严格模式时,隐式全局将抛出此错误。@musefan他的问题清楚地表明,他想了解为什么他收到
输出:ReferenceError:myvar未定义
,而不是
未定义
@musefan,当你说“它打印未定义,因为”时,这意味着你没有尝试它。代码根本不打印
未定义的
,我不认为它是函数的本地代码。因为在调用函数之后,就可以在全局范围内访问它。出于某种原因,它似乎直到函数完成后才将其设置为全局范围call@musefan实际上,除非您使用
var
变量
myvar
将不是函数的局部变量。因为在调用函数之后,就可以在全局范围内访问它。出于某种原因,它似乎直到函数完成后才将其设置为全局范围call@musefan实际上,除非您使用
var
变量
myvar
将不是
hi
的本地变量,我认为它已经在全局范围内了。如果调用函数hi,bef