为甚麽下面2段js执行结果不一样?

funnyone 2011-12-07 10:06:21

(function() {
var showAnswer, x;
x = true;
showAnswer = function() {
x = x;
return alert(x ? 'It works!' : 'Nope.');
};
$(function() {
return $('#click').click(function() {
return showAnswer();
});
});
}).call(this);




(function() {
var showAnswer, x;
var _this = this;
x = true;
showAnswer = function(x) {
if (x == null) x = x;
return alert(x ? 'It works!' : 'Nope.');
};
$(function() {
return $('#click').click(function() {
return showAnswer();
});
});
}).call(this);


<button id="click">click me</button>




第一个结果 是"It works!",第二个"Nope."。
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chchawen 2011-12-07
  • 打赏
  • 举报
回复
function(x) {
if (x == null) x = x;
参数x并不是外部的x,并且x=x赋值的x也不是外部的x而是参数x,所以第二个x为null,即使你判断了x==null的时候在x=x还是null
三石-gary 2011-12-07
  • 打赏
  • 举报
回复
变量和赋值问题了。。你把function(x)这里面的x换成别的变量你就会发现其实是一样的
(function () {
var showAnswer, x;
var _this = this;
x = true;
showAnswer = function (a) {
if (a == null) {
a = x;
return alert(a ? 'It works!' : 'Nope.');
}
};
$(function () {
return $('#click').click(function () {
return showAnswer();
});
});
}).call(this);

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧