首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数go()‘vs `go =function()’

函数go()‘vs `go =function()’
EN

Stack Overflow用户
提问于 2011-03-17 20:24:14
回答 3查看 2.3K关注 0票数 2

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

代码语言:javascript
运行
复制
go = function () {
    alert("Go!");
}

$(function () {
    go();
});

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

网页错误详细信息 用户代理程序: Mozilla/4.0 (兼容;MSIE8.0;Windows 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)时间戳:清华,2011年3月17日20:18:03世界协调时 Message: Object不支持此属性或方法行:1 Char: 1代码:0 URI:http://localhost:61710/Scripts/number.js

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

代码语言:javascript
运行
复制
function go() {
    alert("Go!");
}

...everything工作得很好。

我遗漏了什么?另外,是否有理由使用一种形式的函数初始化器而不是另一种?

编辑:-当我使用内置的Visual服务器在IE8实例中运行代码时(启动时不进行调试),就会得到这个错误。当我在没有Visual的IE8的单独实例中运行代码时,它工作得很好。也许Visual迫使IE使用更严格的JS编译器设置?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-17 20:25:35

您应该首先声明变量:

代码语言:javascript
运行
复制
var go = function () {
    alert("Go!");
}

使用此表单的一个原因是,它可以帮助并避免使用函数污染全局命名空间(请参阅这个概念的示例这里)。

票数 8
EN

Stack Overflow用户

发布于 2011-03-17 20:28:11

区别(并可能帮助你决定哪一个比另一个更好)是

代码语言:javascript
运行
复制
go = function () {
    alert("Go!");
}

在解析时定义,而

代码语言:javascript
运行
复制
function go() {
    alert("Go!");
}

是在运行时定义的。

P.S.,这对我有用,但是你可能需要:

代码语言:javascript
运行
复制
var go = ... 

而不是

代码语言:javascript
运行
复制
go = ...
票数 3
EN

Stack Overflow用户

发布于 2011-03-17 20:26:31

对我来说很好:

http://jsfiddle.net/vEKgX/

尽管尝试这样做,但是:

代码语言:javascript
运行
复制
var go = function () {
    alert("Go!");
}

$(go);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5344788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档