相关疑难解决方法(0)

如何否定 JS 中的 bool 内部函数?

我现在正在编写一些脚本,但在尝试否定函数内的布尔值时遇到了问题。我的意思是:

var test = true;

function changeThisBoolPlease(asd){
  asd=!asd;
}

alert(test);
  changeThisBoolPlease(test);
alert(test);
Run Code Online (Sandbox Code Playgroud)

警报为真,然后为真。

有任何想法吗?JS 引用不是很完美吗?

编辑:

好的,这只是我功能的一部分:

function przesun(kolor, figury, castlings, x1, y1, x2, y2, strona) {
    kolor = nowaPozycjaKolor(kolor,x1, y1, x2, y2);
    figury = nowaPozycjaFigur(figury,x1, y1, x2, y2);
    strona = !strona;
}
Run Code Online (Sandbox Code Playgroud)

实际上我不能返回这个值。如何?

javascript boolean negate

6
推荐指数
1
解决办法
2万
查看次数

如何在javascript中创建指向对象属性的指针?

如果我有这样的对象:

obj = {a:{aa:1}, b:2};
Run Code Online (Sandbox Code Playgroud)

我想创建一个快捷变量(指向obj.a.aa的指针)x,如下所示:

x = obj.a.aa;
Run Code Online (Sandbox Code Playgroud)

然后我想使用x将值3分配给obj.a.aa,如下所示:

x = 3;  // I would like for obj.a.aa to now equal 3
console.log(obj.a.aa); // 1  (I want 3)
Run Code Online (Sandbox Code Playgroud)

如何将x设置为导致值3进入obj.a.aa?

我知道obj.a.aa是一个原始的,但是如何定义一个指向它的变量,然后我可以使用它来为属性赋值?

javascript

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

JavaScript - 数组通过引用传递,但在重新分配时丢失

在下面的JS代码中,为什么不将like didf3(arr2)的值更改为?有什么方法可以按预期工作(如果可能,不返回修改后的数组)?arr2f2(arr1)arr1f3

var arr1 = [1, 2, 3, 4];
var arr2 = [1, 2, 3, 4];

function f1() {
    return [2, 3, 4, 5];
}

function f2(arr) {
    arr.push(5);
}

function f3(arr) {
    arr = f1();
}

f2(arr1);
console.log(arr1); // [ 1, 2, 3, 4, 5 ]

f3(arr2);
console.log(arr2); // [ 1, 2, 3, 4 ], expect [2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

javascript pass-by-reference

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

Array.prototype.map()可以改变它调用的数组吗?

Mozilla说:

map不会改变调用它的数组(尽管回调,如果被调用,可能会这样做).

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

具体来说,回调传递的第三个参数是:

调用了数组映射.

我假设这意味着内存中的数组位置通过引用复制到回调中.

因此,通过改变第三个参数,我们应该改变原始数组,但是以下两个片段会产生相互矛盾的结果:

情况1,重新分配第三个参数没有改变原始数组:

var A = [1, 2, 3];
A.map((v,i,_A) => { 
  console.log("_A is the array map invoked on: ", _A===A); // true
  _A = []; // reassign an empty array
  return v;
});
console.log("'A' did not mutate:", A) // [1, 2, 3] did not mutate
Run Code Online (Sandbox Code Playgroud)

情况2,将第三个参数设置为零长度会改变原始数组:

var B = [1, 2, 3];
B.map((v,i,_B) => { 
  console.log("_B is the array map invoked on: ", _B===B); // true
  _B.length = 0; // clearing the array by …
Run Code Online (Sandbox Code Playgroud)

javascript arrays

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

如何在javascript中通过引用将全局变量作为参数传递

我需要一个全局变量“window.myHub”来设置它作为参数传递给函数(SignalRSetUp),如下所示:它现在传递的方式,没有设置它!这该如何解决呢?

var args = {
            "userObjectId": UserObjectId,
            "hubURL": LCSHubApiURL,
            "hubName": HubProxyName,
};
var callBackFuncs = {
            "ping": PingFunc
};

window.myHub;
var signalRSetUp = new SignalRSetUp(args,callBackFuncs, window.myHub);
Run Code Online (Sandbox Code Playgroud)
SignalRSetUp(argObj,eventFuncs,globalVar)
{
     var $self = this;
     var connection = $.hubConnection(argObj.hubURL);
     var hub = connection.createHubProxy(argObj.hubName);
     hub.connection.qs = { "objectid": argObj.userObjectId };

     //Wire : Call back functions and the Hub events
     for (var e in eventFuncs) {
         hub.on(e, eventFuncs[e]);
         //hub event fail
     }

     connection.start()
     .done(function () {
         globalVar = hub;
     }).fail(function (error) {
         console.log('Could not Connect!'); …
Run Code Online (Sandbox Code Playgroud)

javascript pass-by-reference

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

如何创建永远不会读取$ scope的$ scope函数?

我想创建一个$ scope函数,它只会操作它接收的变量.

我做了一个工作的Plunker来测试一下.

我有一个ng-repeat,它只列出了小猫的名字和id.我还有一个输入表单来接收新猫咪的名字.然后,我有3个按钮,每个按钮访问一个不同的$ scope函数,它将以不同的方式操作$ scope.

每个函数目标是从输入表单中读取 kitty 的名称,读取 kitties数组中使用的最后一个id,将id + 1分配给新kitty,将新kitty推送到kitty数组并删除表格数据.

  • 第一个函数,$scope.addFullScope()将不会作为参数接收任何内容,并将从中读取和操作所有内容$scope.

  • 第二功能,$scope.addJustDelete(kitty, kitties)将接收新的kittykitties阵列作为参数.但是,最后,为了清理表格,它会做$scope.kitty = undefined

  • 第三个功能,$scope.addNoScope(kitty, kitties)将接收新的kittykitties阵列作为参数.但是,最后,为了清理表格,它会做kitty = undefined.但表格不会清理!一切都会出现问题.

我怎样才能使这个第三个功能或类似功能工作,所以我有一个完全独立的功能可以使用?

附录:

HTML:

  <body ng-app='app' ng-controller="ctrl">

    <h3 ng-repeat="kitty in kitties">
      {{kitty.name}}: {{kitty.id}} //Kitties list
    </h3>

    <input placeholder='Kitty …
Run Code Online (Sandbox Code Playgroud)

html javascript arrays angularjs angularjs-scope

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

通过参考混淆分配

我有一个'交易'对象,其中包含对orderBook.BTCUSDT的引用.我的目的是在orderBook.BTCUSDT改变时改变'交易'.

但是,更改orderBook.BTCUSDT不起作用.但改变orderBook.BTCUSDT.asks的确如此.

为什么?

orderBook = {'BTCUSDT': {'asks':[1,2,3,5], 'bids':[6,7,8,9]}};
trades = {"one": orderBook.BTCUSDT};
orderBook.BTCUSDT = 1234; // does not work
console.log(trades);

/* Output:
{
  "one": {
    "asks": [
      1,
      2,
      3,
      5
    ],
    "bids": [
      6,
      7,
      8,
      9
    ]
  }
}
*/

orderBook = {'BTCUSDT': {'asks':[1,2,3,5], 'bids':[6,7,8,9]}};
trades = {"one": orderBook.BTCUSDT};
orderBook.BTCUSDT.asks = 1234; // works
console.log(trades);

/* Output:
{
  "one": {
    "asks": 1234,
    "bids": [
      6,
      7,
      8,
      9
    ]
  }
}
*/
Run Code Online (Sandbox Code Playgroud)

在Axiac和Artur回复之后编辑

在阅读了Axiac和Artur的回复之后,我找到了另一种提问的方法.为什么第一个代码块工作但不是第二个?为什么我必须使用"价格"为对象添加另一个级别?似乎两者都试图做同样的事情(用另一个对象替换一个对象,但保留引用),只是在不同的级别.

orderBook = {BTCUSDT: { …
Run Code Online (Sandbox Code Playgroud)

javascript

4
推荐指数
2
解决办法
88
查看次数

为什么通过引用传递在此代码中似乎无效,并且obj1.value仍在函数外部

当我们在函数中将obj2分配给obj1时,按引用传递不起作用,在函数外部它不起作用并且obj1保留其原始值,但是为什么呢?

let obj1 = {
  value: 'a'
}

let obj2 = {
  value: 'b'
}

obj3 = obj2;

function change(obj1, obj2) {
  obj1 = obj2
  obj2.value = 'c'
}


change(obj1, obj2);

console.log(obj1.value)
Run Code Online (Sandbox Code Playgroud)

javascript

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

需要了解Javascript对象引用

我正在看John Resig网站上的这段代码.我不明白的是当忍者对象被设置为空对象时,yell方法仍然可供武士使用.

是因为因为忍者周围还有一个参考,所以它不是垃圾收集的吗?

var ninja = {
  yell: function(n){
    return n > 0 ? yell(n-1) + "a" : "hiy";
  }
};


var samurai = { yell: ninja.yell };

ninja = {};

console.log(samurai.yell(2)); //hiy
Run Code Online (Sandbox Code Playgroud)

http://ejohn.org/apps/learn/#14 (原始来源,我修改了一点以删除命名函数表达式).

javascript

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

在 JavaScript 中制作全局变量的本地副本

根据这个问题,如果我将全局变量作为参数传递给函数,则该全局变量将成为本地副本。

如果是这样,为什么这个 jfiddle 的行为方式如此?警报dog, cat不应该显示而不仅仅是显示cat吗?

我什至比示例更进一步,专门将全局变量复制到局部变量中,但结果是一样的。我真的很希望能够shift()在保持全局完整的同时进行本地化。

javascript

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