Javascript “产出是给予”;1“未定义”;为了一些应该是“的东西”;1功能“;当然可以错在哪里?
下面的示例必须输出sure函数,因为x的值是“1”(整数),然后我们要传递一个名为“f”(函数的)的参数。不管这个函数是执行某些操作还是为空,但我确信——变量f-->指向函数。所以Javascript “产出是给予”;1“未定义”;为了一些应该是“的东西”;1功能“;当然可以错在哪里?,javascript,html,function,Javascript,Html,Function,下面的示例必须输出sure函数,因为x的值是“1”(整数),然后我们要传递一个名为“f”(函数的)的参数。不管这个函数是执行某些操作还是为空,但我确信——变量f-->指向函数。所以typeof(f)肯定会返回function 现在,将整数和“函数”(因为typeof总是返回字符串)相加将成为字符串-->1函数 现在,令人惊讶的是,输出是“1未定义的”。怎么做 var x=1; if(函数f(){}){ x+=f的类型; } 控制台日志(x); 您将得到未定义的,因为函数f未在任何代码中定义。
typeof(f)
肯定会返回function
现在,将整数和“函数”(因为typeof总是返回字符串)相加将成为字符串-->1函数
现在,令人惊讶的是,输出是“1未定义的”。怎么做
var x=1;
if(函数f(){}){
x+=f的类型;
}
控制台日志(x);
您将得到未定义的
,因为函数f
未在任何代码中定义。在if语句中写入函数
不会定义函数
。代码只是假设它是一个真实值,if语句的一个条件,但在realf
中不存在。您可以在外部定义f
,它可以正常工作,或者您可以在if中执行赋值,然后它也可以工作
var x=1;
if(f=function(){}){
x+=f的类型;
}
控制台日志(x)代码>您得到的是未定义的
,因为函数f
未在任何代码中定义。在if语句中写入函数
不会定义函数
。代码只是假设它是一个真实值,if语句的一个条件,但在realf
中不存在。您可以在外部定义f
,它可以正常工作,或者您可以在if中执行赋值,然后它也可以工作
var x=1;
if(f=function(){}){
x+=f的类型;
}
控制台日志(x)代码>
var x=1;
var f;
if(f=function(){}){
x+=f的类型;
}
控制台日志(x)代码>
var x=1;
var f;
if(f=function(){}){
x+=f的类型;
}
控制台日志(x)代码>
函数声明将在当前范围内创建一个同名变量
函数表达式只会在其内部创建具有相同名称的变量
因此变量f
仅存在:
if (function f(){ })
^^^^
here
函数表达式本身作为一个函数进行计算,if
语句将其作为一个真实值,但范围中没有f
变量
那么解释一下,为什么返回3
您正在显式地为变量赋值。该变量仍在范围内
如果您这样做,您将获得相同的效果:
if (f = function f(){}) {
因此:
- 创建一个函数
- 命名函数
f
- 在名为
f
的函数中创建一个变量,其中包含对函数的引用
- 作为函数进行计算,该函数为真值,由
if
而:
(f = function f(){})
- 创建一个函数
- 命名函数
f
- 在名为
f
的函数中创建一个变量,其中包含对函数的引用
- 在函数外部创建变量
f
函数f(){}
作为函数计算,并由=
f=function f(){}
也作为函数进行计算,这是一个真值,由if
函数声明将在当前范围内创建一个同名变量
函数表达式只会在其内部创建具有相同名称的变量
因此变量f
仅存在:
if (function f(){ })
^^^^
here
函数表达式本身作为一个函数进行计算,if
语句将其作为一个真实值,但范围中没有f
变量
那么解释一下,为什么返回3
您正在显式地为变量赋值。该变量仍在范围内
如果您这样做,您将获得相同的效果:
if (f = function f(){}) {
因此:
- 创建一个函数
- 命名函数
f
- 在名为
f
的函数中创建一个变量,其中包含对函数的引用
- 作为函数进行计算,该函数为真值,由
if
而:
(f = function f(){})
- 创建一个函数
- 命名函数
f
- 在名为
f
的函数中创建一个变量,其中包含对函数的引用
- 在函数外部创建变量
f
函数f(){}
作为函数计算,并由=
f=function f(){}
也作为函数进行计算,这是一个真值,由if
我知道这一点。但是,只要问一下为什么在给定的例子中输出是这样的;我知道,我们如何才能取得我们想要的结果。但是,只要问一下为什么在给定的例子中输出是这样的;不是我们如何才能带来所需的结果(我们想要的)。请参阅更新的问题。你的逻辑似乎不适合所有情况。。。奇怪!在第二个代码段中,您分配了一个值,然后使用它,这是有效的。请参见编辑。当你分配一个函数时,它也会起作用。如果您只是在If语句中定义y,而不指定任何值,它也会给出错误。这就是您的两个代码片段之间的差异。请参见更新的问题。你的逻辑似乎不适合所有情况。。。奇怪!在第二个代码段中,您分配了一个值,然后使用它,这是有效的。请参见编辑。当你分配一个函数时,它也会起作用。如果您只是在If语句中定义y,而不指定任何值,它也会给出错误。这就是你的两个代码片段之间的区别