在chrome的开发者工具中打的以下代码:
var c = function CC(){}
CC // Uncaught ReferenceError: CC is not defined
c // ƒ CC(){}
var c1 = new c()
c1.constructor // ƒ CC(){}
求问为什么输出CC
的时候是not defined
,var c = function CC(){}
这句不是相当于声明了c和CC,然后把CC指向的函数地址赋给c吗?
在chrome的开发者工具中打的以下代码:
var c = function CC(){}
CC // Uncaught ReferenceError: CC is not defined
c // ƒ CC(){}
var c1 = new c()
c1.constructor // ƒ CC(){}
求问为什么输出CC
的时候是not defined
,var c = function CC(){}
这句不是相当于声明了c和CC,然后把CC指向的函数地址赋给c吗?
函数声明:function name(param) { statements }
函数表达式:var myFunction = function name(param) { statements }
var c = function CC(){}实际先然后声明了一个c的变量,然后创建了一个名为CC的函数并赋给c,此时CC函数并未在全局声明,所以外部取不到,(而不是因为他是匿名函数,他不是匿名函数,只是作用域仅限于函数内部)。而在函数内部,CC和c均指向同一个函数
var c = function CC(){}
这个是命名函数表达式。
除了CC()可以在函数内部调用之外,其它地方跟匿名函数表达式一样。
例如计算阶乘:
var c = function CC( n ){
if( n <= 1 ){
return 1;
}
return n*CC( n - 1 )
}
c(4);//24
个人认为这里
var c = function CC(){}
等号右侧应该是是一个匿名函数,如果有函数名的话可能会忽略掉。
依据:你在控制台输入:CC
的错误提示与直接属于一个没有定义的变量的错误提示是一样的。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
var c = function CC(){}
创建了一个匿名函数然后赋值给c
,这个匿名函数有个名字叫CC
,但是这个名字只在这个函数体内有效https://developer.mozilla.org...