jQuery函数不会改变全局变量,而常规javascript函数会
jQuery function does not change global variable while regular javascript functions do
这段代码:
var verb = "";
function printPage (input) {
$("div").append(input + "<br>");
}
$( "#submit" ).click(function() {
verb = $('#enter').val();
printPage(verb);
});
printPage(verb);
只导致#enter(表单)的值在单击事件中记录一次(而最后一个printPage打印原始空字符串),而以下代码:
var verb = "";
function printPage (input) {
$("div").append(input + "<br>");
}
function buttonClick() {
verb = "verb!";
printPage(verb);
}
buttonClick();
printPage(verb);
打印动词两次,因为函数已经成功地更改了动词变量的值?如果我没有解释清楚我的问题,我很抱歉,如果需要的话,我会详细说明的。
输入值可能是空的,所以你可能会看到不变,你可以这样使用:
verb = $('#enter').val() || 'verb';
您的buttonClick
函数在printPage
函数之前运行-这使得verb
变量保持'动词!'。printPage
函数在verb
变量具有"动词!"之后运行两次。
在jQuery的情况下,printPage
函数立即运行,而verb
为空。只有当你点击按钮,那么verb
有一个值。
无论是否使用jQuery,如果方法运行并且$('#enter')的值不为空(否则,您将看不到更改),它都会更改变量。
要测试这一点,将console.log( verb );
放在verb = $('#enter').val();
的前后。你会看到你的onClick方法没有被调用,或者它甚至没有值。
var verb = "";
function printPage (input) {
$("div").append(input + "<br>");
}
$( "#submit" ).click(function() {
console.log( verb );
verb = $('#enter').val();
console.log( verb );
printPage(verb);
console.log( verb );
});
printPage(verb);
我的猜测是,您没有使用正确的选择器(而不是#enter,您应该使用不同的id/类选择器),或者该值实际上是空的。
编辑:如果您想知道console.log正在做什么,它将它写入您的浏览器的控制台(如果您已经知道这一点,请道歉)。应该可以打开它,看到我们正在打印的调试日志。
你也可以直接使用alert(动词)
相关文章:
- 我想以异步方式执行常规函数
- 如何使用dojo方面调用常规JavaScript函数
- Javascript构造函数创建对象与常规对象
- JavaScript ES6:测试箭头函数、内置函数、常规函数
- 具有常规位置类型的谷歌地图位置构造函数
- 如何在常规jQuery包装器中使用jQuery-mobile函数
- 是否可以从 JQuery 函数中访问常规的 JavaScript 变量
- 为什么函数响应.protype而常规对象不响应
- 在redux中使用thunk中间件比使用常规函数作为异步操作创建者有什么好处
- 如何从AngularJS控制器访问常规Javascript函数
- jQuery 1.7.1“;关于“;函数不适用于常规Javascript事件触发器
- 如何以编程方式区分箭头函数和常规函数
- 调用 JavaScript 返回函数作为常规定义的方法
- 如何从包含承诺链的常规 JavaScript 函数返回值
- 匿名函数vs常规函数性能/优化
- 需要JS的常规函数
- jQuery函数不会改变全局变量,而常规javascript函数会
- 当原型函数调用javascript中的常规函数时会发生什么?
- 创建常规函数或原型函数,哪个更有效或更好?
- 这个ES6箭头函数和常规函数的区别