javascript - jQuery/Javascript 全局和局部变量混淆 - 基础

标签 javascript jquery variables global-variables

$(document).ready(function() {

var v = $("input[name=link]").val();

$('p').on('click', function () {
    console.log(v);
    console.log('hello'); 

})  
});

上面是我写的一段jQuery/JS代码。它应该在输入字段中获取值,并在我单击段落时将其打印到控制台。

我已经将 v 声明为全局变量,但它没有打印到控制台。只有当我将 var v 声明放入函数中使其成为局部变量时,它才有效。为什么会这样?我认为全局变量总是应该在整个代码中起作用。请就此教育我。

最佳答案

这不是范围问题,v 从您作为事件处理程序提供给 jQuery 的回调中是完全可见的。

您的代码的问题是 v 会在文档准备好后立即被评估。如果您更改输入的值,v 不会更改,如果它最初为空,则它会保持为空。 v 不是某种指向输入字段的指针,当输入更改时它没有理由更改。

要确保使用点击时字段的值,请使用以下代码:

$(document).ready(function() {
    $('p').on('click', function () {
        var v = $("input[name=link]").val();
        console.log(v);
        console.log('hello'); 
    })  
});

关于javascript - jQuery/Javascript 全局和局部变量混淆 - 基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721449/

相关文章:

python - 在函数内、函数外使用声明的值

javascript - 设置 Sails js View 扩展不起作用

javascript - 在 JavaScript 中使用 `return false` 时处理 `eval`

javascript - 动态引用变量(对象)?

javascript - mousewheel.scroll 在 Firefox 中不工作

javascript - 对多个图像使用模糊图像加载

javascript - JQuery 验证复选框不起作用

jquery 将 datepicker 绑定(bind)到 ajax 加载的内容

excel - 一个变量如何引用vba中的同一个变量?

java - 如何调用和声明具有可变数量参数的方法?