Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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 “产出是给予”;1“未定义”;为了一些应该是“的东西”;1功能“;当然可以错在哪里?_Javascript_Html_Function - Fatal编程技术网

Javascript “产出是给予”;1“未定义”;为了一些应该是“的东西”;1功能“;当然可以错在哪里?

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未在任何代码中定义。

下面的示例必须输出sure函数,因为x的值是“1”(整数),然后我们要传递一个名为“f”(函数的)的参数。不管这个函数是执行某些操作还是为空,但我确信——变量f-->指向函数。所以
typeof(f)
肯定会返回
function

现在,将整数和“函数”(因为typeof总是返回字符串)相加将成为字符串-->1函数

现在,令人惊讶的是,输出是“1未定义的”。怎么做


var x=1;
if(函数f(){}){
x+=f的类型;
}
控制台日志(x);

您将得到
未定义的
,因为
函数f
未在任何代码中定义。在
if语句中写入
函数
不会定义
函数
。代码只是假设它是一个真实值,if语句的一个条件,但在real
f
中不存在。您可以在外部定义
f
,它可以正常工作,或者您可以在if中执行赋值,然后它也可以工作

var x=1;
if(f=function(){}){
x+=f的类型;
}

控制台日志(x)您得到的是
未定义的
,因为
函数f
未在任何代码中定义。在
if语句中写入
函数
不会定义
函数
。代码只是假设它是一个真实值,if语句的一个条件,但在real
f
中不存在。您可以在外部定义
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,而不指定任何值,它也会给出错误。这就是你的两个代码片段之间的区别