`function go()`vs`go = function()`

Cha*_*evy 2 javascript visual-studio internet-explorer-8

我遇到了一些Javascript似乎是一个愚蠢的问题:

go = function () {
    alert("Go!");
}

$(function () {
    go();
});
Run Code Online (Sandbox Code Playgroud)

当页面加载时我收到一个错误:

网页错误详情

用户代理:Mozilla/4.0(兼容; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; .NAP 1.1)时间戳:Thu,2011年3月17日20:18:03 UTC

消息:对象不支持此属性或方法行:1个字符:1代码:0 URI: http:// localhost:61710/Scripts/number.js

当我将go初始化程序更改为:

function go() {
    alert("Go!");
}
Run Code Online (Sandbox Code Playgroud)

......一切正常

我错过了什么?另外,是否有理由使用一种形式的函数初始化程序而不是另一种形式?

编辑: 当我使用内置的Visual Studio Web服务器(无需调试启动)在IE8的实例中运行代码时,我收到此错误.当我在没有Visual Studio的IE8的单独实例中运行代码时,它工作得很好.也许Visual Studio强制IE使用更严格的JS编译器设置?

Ode*_*ded 8

您应该首先声明变量:

var go = function () {
    alert("Go!");
}
Run Code Online (Sandbox Code Playgroud)

使用这种形式的一个原因是,它可以帮助避免污染与功能的全局命名空间(见这个概念的例子在这里).