相关疑难解决方法(0)

JavaScript设计模式 - 没有得到理想的结果

我把这段代码剪掉了.我得到aundefined.这不应该显示父函数中传递的参数值吗?

function test(a) {
    return function(a) {
        console.log('a is : ' + a); // Output: a is undefined
    }();
}

test('A should not be undefined? '); 
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
1
解决办法
30
查看次数

停止在闭包中通过引用传递

我的代码看起来像这样:

var a = [];
for(var i = 0; i < 10; i++) {
    a[i] = function() {
        console.log(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它似乎i是通过引用传递的,所以a输出10中的所有函数.如何使每个函数输出i创建它时的值?即a[0]()给出0,a[1]()给出1等.

编辑:澄清,我不想a存储值0-9.我想a存储返回值0-9的函数.

javascript closures pass-by-reference

1
推荐指数
1
解决办法
26
查看次数

如何正确存储变量而不在全局存储它们?

假设我声明了fooready函数中调用的变量.通常,当函数结束时,会删除本地声明的变量吗?

我想在事件监听器中使用这个变量#someid.我试过这个,foo当发生点击事件时,仍然可以访问该变量#someid.

当ready函数结束时,为什么这个变量不会被破坏并且仍然可以访问?声明变量并以这种方式使用它是否安全?我不想全局声明变量,因为我没有.

编辑:这些事件监听器及其变量存储在哪里?

这是我的js:

$(document).ready(function() {
var foo = 0;

//random event listener
$('#someId').on('click', function() { foo++; }); //increment foo

});
Run Code Online (Sandbox Code Playgroud)

javascript jquery

1
推荐指数
1
解决办法
51
查看次数

javascript中自调用函数内变量的生命周期是多少

我一直在努力理解以下代码:

var add = (function () {
        var counter = 0;
        return function () {return counter += 1;}
    })();
    add();
    add();
    add();
Run Code Online (Sandbox Code Playgroud)

这里add分配了匿名自调用函数的返回值 - 即函数function() { return counter += 1 }.现在第一次add()被调用它1按预期返回.但第二次add()称它返回2.

我的问题是因为counter在函数内定义所以不是每次函数完成执行counter都应该死掉?也就是说,在第一次调用add()1之后将显示.现在我们已经不在那个函数中,所以不应该counter忘记它以前的值并且像automatic变量一样从堆栈中销毁?

javascript variables lifetime

1
推荐指数
1
解决办法
607
查看次数

如何处理不同js文件中两个同名变量?

我有两个 javascript 文件,其中的变量具有相同的名称,我如何定义使用哪一个?

javascript variables var

1
推荐指数
1
解决办法
5567
查看次数

单击按钮更改html文本

我几天前进入了js.我开始玩新功能和事件,但我被困在这里

var str = ["A", "b", "c", "d", "e"];

function Generate() {
  var text = document.getElementById("text");
  var countStr = 0;
  text.innerHTML = str[countStr];
  countStr += 1;

}
Run Code Online (Sandbox Code Playgroud)
<div id="quote">
  <p id="text">I'm a paragraph</p>
</div>
<button id="butt" onclick="Generate()">Generate</button>
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时,文本变为str [0]但是当我再次单击时它不会改变; 你能告诉我为什么吗 ?

html javascript events function button

1
推荐指数
1
解决办法
919
查看次数

脚本文件中未定义JQuery函数

显然我的jquery函数没有定义.我不知道为什么.我在脚本文件之前调用jquery,所以不是这样,jquery在我把它放入函数之前工作正常.

(function ($) {

function selectCharacter(){
    $('select.character_select').change(function(){

        alert('Select field value has changed to' + $('select.character_select').val());



    });
}

})(jQuery);


selectCharacter();
Run Code Online (Sandbox Code Playgroud)

jquery function

1
推荐指数
1
解决办法
123
查看次数

将值从数组传递给 React Native 中的函数

我正在从 JSON 数组中提取数据并从中创建对象,并在我使用for循环创建的对象中从数组中设置我需要的字符串值:

var gamesList = [];
gamesList = this.props.navigation.state.params.gamesList;
var gameIconList = [];

for(var i=0;i<3;i++){
  var provider = gamesList[i].provider;
  var gameId = gamesList[i].gameId.toString();

  gameIconList.push(
    <TouchableOpacity onPress={(provider,gameId) => this.launchGame(provider,gameId)}>
      <ResponsiveImage source={{uri: gamesList[i].imageUrl}}
      initWidth="200" initHeight="120" defaultSource={require('./splash-tile2.png')} />
    </TouchableOpacity>
  );
}
Run Code Online (Sandbox Code Playgroud)

这一切都发生在render()函数中,{gameIconList}将在return()函数中调用,如下所示:

return(
 <ScrollView horizontal={true}>
    {gameIconList}
 </ScrollView>
);
Run Code Online (Sandbox Code Playgroud)

如您所见,我通过循环将字符串值设置到 onPress 函数调用中,当我单击图像中的图像时,TouchableOpacity我希望将设置的字符串值发送回上面的函数,即:

  launchGame = (provider, gameId) => {

  params = {
    Provider: provider.nativeEvent.text,
    Platform: this.state.Platform,
    Environment: this.state.Environment,
    GameId: gameId,
    IsDemo: this.state.IsDemo
  };

  request …
Run Code Online (Sandbox Code Playgroud)

javascript arrays state reactjs react-native

1
推荐指数
1
解决办法
2802
查看次数

传递给setInterval的函数范围

在setInterval中调用时,我无法理解函数范围.

当我在setInterval中直接声明一个匿名函数时,如下所示:

let lastEventUUID = "some ID";
const interval = setInterval(async function() {
  console.log("lastEventUUID -> " + lastEventUUID);
  lastEventUUID = "another ID";
}, 1000);
Run Code Online (Sandbox Code Playgroud)

我得到的一切都按预期工作

lastEventUUID -> some ID
lastEventUUID -> another ID
...
Run Code Online (Sandbox Code Playgroud)

但是当我分开宣布我的功能时

async function myFunc(lastEventUUID) {
  console.log("lastEventUUID -> " + lastEventUUID);
  lastEventUUID = "another ID";
}
Run Code Online (Sandbox Code Playgroud)

并将调用设置为setInterval:

let lastEventUUID = "some ID";
const interval = setInterval(myFunc, 1000, lastEventUUID);
Run Code Online (Sandbox Code Playgroud)

lastEventUUID没有在下次通话中更新

lastEventUUID -> some ID
lastEventUUID -> some ID
...
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

javascript setinterval

1
推荐指数
1
解决办法
178
查看次数

0
推荐指数
1
解决办法
184
查看次数