在javascript中声明函数时出错

在javascript中声明函数时出错,javascript,function,Javascript,Function,我有类似的东西 var a = function b(){}; a() // it's work b() // error b is not define 我知道没有人会声明这样的函数。但是为什么javascript在我这样编码时不会抛出错误呢。但是当我开始通过call b()调用函数时,它抛出了一个错误 有人能解释一下为什么吗?你为什么不这么做: a=函数(){ …对函数a进行编码。。 } b=函数(){ …代码功能b。。 } 通过a()调用函数之后和b()这是一个命名函数表达式 它的名称

我有类似的东西

var a = function b(){};
a() // it's work
b() // error b is not define
我知道没有人会声明这样的函数。但是为什么javascript在我这样编码时不会抛出错误呢。但是当我开始通过call b()调用函数时,它抛出了一个错误


有人能解释一下为什么吗?

你为什么不这么做:

a=函数(){
…对函数a进行编码。。
}
b=函数(){
…代码功能b。。
}

通过
a()调用函数之后
b()

这是一个命名函数表达式


它的名称仅在函数内部可见,正如您将函数b放入变量a中所建议的那样 使用“var”时,变量可以是任何类型,在这种情况下,它变成“function b”

所以b没有定义

  • Javascript是一种弱类型语言
  • var a=函数b(){}
    是有效的声明,但b的范围仅限于a。你不能在那之外访问它

  • 此函数始终返回值

    var a = function b(){};
    

    A是一个与函数b相等的变量,这意味着当您调用A()时,它会调用b();您将在b()上获得错误;“未定义”,因为它是指定的值。您几乎是在尝试调用赋值,它类似于:var a=“b”;然后你试着调用字符串“b”();是的,这对我来说很有意义。非常感谢但是仍然想知道为什么javascript没有抛出错误?这与类型无关。OP不是一个函数声明,它是一个函数表达式。IE 6有一个错误,命名函数表达式变成了外部作用域中的函数。但希望那些日子已经过去了…;-)我从来不知道,有趣的信息:)那么javascript中的“函数b”是什么呢。看起来没什么意义。当调用a()时也是如此。此函数仍正常运行:)