与JavaScript范围混淆
这个问题在这里已经有了答案:
我发现第一个例子更神秘...
在第二个例子中,你不声明一个变量a
函数的内部。 所以,当你分配给a
,它就瞄准了外部的a
。 非常直接。
在第一个例子中,你在函数内部声明了一个变量a
,但以一种不寻常的方式:通过声明一个名为a
的函数。 因此,分配给a
将使用该本地“变量”。
这里有两件事要拿走:
a)变量和函数声明被“悬挂”到其范围的顶部。 虽然function a(){}
写在最后,但是变量a
已经被创建并且在范围的顶部可见。
b)函数也可以用作变量。 你可以传递函数,你可以重新分配函数定义。 它们与其他变量共享相同的命名空间。
因为当你使用一个声明的function
它被挂起并转换成一个函数表达式,即var a = function() {};
这是与您a
变量创建冲突。
您可以使用Visual-Studio进行编码:
在TypeScript-File中对代码进行编程将使您能够通过悬停变量来查看变量类型。
当您尝试将数值10应用于首先被声明为函数的变量“a”时,它也会警告您。 这就是我喜欢的TypeScript,你可以在这里获得更多关于它的信息:http://www.typescriptlang.org/
链接地址: http://www.djcxy.com/p/40821.html上一篇: Confusion with JavaScript scoping
下一篇: When do I use var?