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

时间:2013-03-30 17:37:40

标签: 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声明放入函数使其成为局部变量时才有效。为什么会这样?我认为全局变量总是应该在整个代码中工作。请教我这个。

2 个答案:

答案 0 :(得分:4)

这不是范围问题,{j}作为事件处理程序的回调可以完全看到v

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

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

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

答案 1 :(得分:0)

问题是您在更改v

中的文字后没有更改textbox

当准备好调用时,您将textbox.i.e的值指定为空。

见下面的代码如何运作。

   var v = 10;
   alert("" + v);
   myFunction();

    function myFunction()
       {
       v = 20;
       }

    alert("" + v);