变量不改变外部功能

时间:2018-11-16 20:38:22

标签: javascript jquery

您好,我创建了一个函数,用于检查输入字段的值并使用输入的数字作为变量。如何编写代码,以便可以在此函数之外使用变量?例如,将光线更改为等于val?

var val = $('input').val();
$('input').change(function(){
    var val = $(this).val();
    console.log(val);
    init(val);
});

var w = c.width = window.innerWidth,
    h = c.height = window.innerHeight,
    ctx = c.getContext('2d'),

    opts = {
        rays: val,

4 个答案:

答案 0 :(得分:1)

替换

  var val = $(this).val();

通过

  val = $(this).val();

否则,您将重新定义变量。

答案 1 :(得分:0)

我正试图了解问题所在。是否要像这样将val值传递给其他函数?

 $('input').change(function(){
    var val = $(this).val();
    console.log(val);
    init(val);
    whatEver(val);
});

function whatEver(val){
var w = c.width = window.innerWidth,
    h = c.height = window.innerHeight,
    ctx = c.getContext('2d'),
opts = {
    rays: val,

  ..
}

答案 2 :(得分:0)

我认为您在这里在范围可变方面苦苦挣扎。当在更改函数中使用关键字var时,您将在本地范围内定义与全局范围内的变量同名的变量。这将覆盖全局变量,但仅覆盖局部函数的范围。

var val = '';

var init = function(value) {
  var $test = $('.test');
  $test.html(value);
}

$('input').change(function(){
    val = $(this).val();
    console.log(val);
    init(val);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="text" />
<br />
<div class="test"></div>

这是另一个没有增加jQuery复杂性的示例。在函数调用之前和之后的控制台日志均依赖于全局范围内的变量,而函数则依赖于其本地范围。

var test = 'test';

function doStuff() {
  var test = 'different test';
  console.log(test);
}
console.log(test);
doStuff();
console.log(test);

答案 3 :(得分:0)

您可以使用getter将函数绑定到Object属性,并在每次查找该属性时使用该函数的返回值。

您还需要更改

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar
tomcat.util.scan.StandardJarScanFilter.jarsToScan=myapp.jar,vaadin*.jar,flow*.jar,polymer*.jar,iron*.jar,shady*.jar

收件人

var val = $(this).val();//inside the change event handler

这样,您无需重新声明局部作用域的val变量,而是将值重新分配给全局val变量。

val = $(this).val();   

var opts = {
    get rays(){
       return val;
    }
}
var val = $('input').val();
$('input').change(function(){
    val = $(this).val();
    console.log('val:',val);
    console.log('opts.rays:', opts.rays);
});
var opts = {
    get rays(){
       return val;
    }
}