如何在函数中设置全局变量

Phi*_*ord 17 javascript jquery

如何在函数中设置全局变量?

$(document).ready(function() {
    var option = '';

    $("[name=select_option_selected]").change(function() { 
        var option = $(this).val();
        alert(option); // Example: Foo  
    });

    alert(option); // Need it to alert Foo from the above change function    
});
Run Code Online (Sandbox Code Playgroud)

hun*_*ter 25

在jQuery onready范围之外声明它

var option = '';

$(document).ready(function() {
    $("[name=select_option_selected]").change(function() { 
        option = $(this).val();
        alert(option); // Example: Foo  
    });

    alert(option); //This will never be "Foo" since option isn't set until that select list changes
});
Run Code Online (Sandbox Code Playgroud)

如果要将其初始化为当前选定的值,请尝试以下操作:

var option = "";
var $select_option_selected = null;

$(function() {        
    $select_option_selected = $("[name='select_option_selected']")
    $select_option_selected.change(function() { 
        option = $(this).val();
    });    
    option = $select_option_selected.val();
});
Run Code Online (Sandbox Code Playgroud)

  • 从技术上讲,如果你没有声明它,浏览器将在全局声明它,但这是不安全的,并且将来不会通过严格模式(即将到达你附近的浏览器= D) (2认同)

typ*_*eof 6

坏道路

正如其他答案所指出的那样,创建全局变量并不是一个好主意.正如他们所指出的,您可以通过以下方式创建全局变量:

  • 在所有函数之外声明变量
  • 在没有var关键字的情况下初始化变量
  • 或者,将其声明为窗口对象的属性: window.options = 'blah';

使用jQuery的Data()方法

但是有一种更好的方法可以使用jQuery(和其他库)创建一个全局可访问的值.在jQuery中,使用该data()方法存储与DOM元素关联的值:

// store 'blah' at document root
$(document).data('mysite.option', 'blah');

// retrieve value
alert($(document).data('mysite.option'));
Run Code Online (Sandbox Code Playgroud)

注意"mysite"......最好为数据库命名空间,原因与在javascript中命名全局变量一样好.