当我加载一个html页面时,正在调用一系列javascript函数,尽管没有引用它们。以下函数将提醒用户“hello”和“world”,即使我没有调用validate或donotcall2
<script >
var validate = new function() {
alert('hello');
};
var donotcall1 = function() {
alert('hello cruel');
return false;
};
var donotcall2 = new function() {
alert(' world');
};
</script>
答案 0 :(得分:1)
问题是您正在使用new
。当你写:
variable = new <something>;
它意味着将函数<something>
称为对象构造函数,例如
var myObj = new Array;
将Array()
作为构造函数调用,并将返回的对象分配给myObj
。
虽然这通常是使用命名函数完成的,但它与匿名函数的作用完全相同,而这正是您的代码所做的事情。它定义了一个匿名函数,然后将其作为对象构造函数调用,并将返回的对象分配给变量validate
。
要将函数本身分配给变量,请不要使用new
。
var validate = function() {
alert("Hello");
};
答案 1 :(得分:-1)
您使用了错误的表示法。请改用以下内容。
var validate = function() {
alert("Hello");
}
..等等。
请注意使用var
而不是function
,并且缺少new
关键字。
答案 2 :(得分:-1)
声明变量的正常方式(你正在做的是):
const donotcall1 = function() {
// if you want to reassign donotcall1 later use let instead of const
alert('hello cruel');
return false;
};
(在ES5及更低版本中,您可以使用var
代替const
或let
)
或者你可以使用
function donotcall1 () {
alert('hello cruel');
return false;
};