相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

JavaScript是一种传递引用还是按值传递的语言?

原始类型(Number,String等)按值传递,但是对象是未知的,因为它们可以是值传递(如果我们认为持有对象的变量实际上是对象的引用)并且通过引用传递(当我们认为对象的变量保存对象本身时).

虽然最后并不重要,但我想知道提交传递约定的参数的正确方法是什么.是否有JavaScript规范的摘录,它定义了与此相关的语义?

javascript pass-by-reference pass-by-value

1311
推荐指数
19
解决办法
34万
查看次数

对象的映射函数(而不是数组)

我有一个对象:

myObject = { 'a': 1, 'b': 2, 'c': 3 }
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个本机方法,类似于Array.prototype.map将使用如下:

newObject = myObject.map(function (value, label) {
    return value * value;
});

// newObject is now { 'a': 1, 'b': 4, 'c': 9 }
Run Code Online (Sandbox Code Playgroud)

JavaScript是否具有map对象的这种功能?(我想将它用于Node.JS,所以我不关心跨浏览器问题.)

javascript functional-programming node.js map-function

903
推荐指数
16
解决办法
100万
查看次数

node.exports与Node.js中的导出

我在Node.js模块中找到了以下合同:

module.exports = exports = nano = function database_module(cfg) {...}
Run Code Online (Sandbox Code Playgroud)

我不知道什么之间的不同module.exportsexports为什么都被用在这里.

javascript commonjs node.js

701
推荐指数
10
解决办法
23万
查看次数

AngularJS中的全局变量

我有一个问题,我在控制器中的范围初始化变量.然后在用户登录时在另一个控制器中进行更改.此变量用于控制导航栏等内容,并根据用户类型限制对站点部分的访问,因此保持其值非常重要.它的问题在于初始化它的控制器,通过角度再次调用,然后将变量重置为其初始值.

我认为这不是声明和初始化全局变量的正确方法,它不是真正的全局变量,所以我的问题是什么是正确的方法,是否有任何关于使用当前版本的角度工作的好例子?

global-variables angularjs

344
推荐指数
7
解决办法
44万
查看次数

在Javascript中通过引用传递变量

如何在JS中通过引用传递变量?我有3个变量,我想要执行几个操作,所以我想将它们放在for循环中并对每个变量执行操作.

伪代码:

myArray = new Array(var1, var2, var3);
for (var x = 0; x < myArray.length; x++){
    //do stuff to the array
    makePretty(myArray[x]);
}
//now do stuff to the updated vars
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

javascript variables pass-by-reference

269
推荐指数
6
解决办法
35万
查看次数

splice正在影响以前复制的变量

可能重复:
在javascript中按值复制数组

我有一个有趣的JavaScript问题.我复制一个数组变量只对副本进行修改,然后拼接副本删除一个元素.但是原始数组变量受到拼接的影响 - 就好像副本是'按引用复制':

window.onload = function() {
  var initial_variable = ['first', 'second', 'third'];
  var copy_initial_variable = initial_variable;
  copy_initial_variable.splice(0, 1);
  alert('initial variable - ' + initial_variable);
};
//output: initial variable - second,third
Run Code Online (Sandbox Code Playgroud)

首先,这是javascript的故意行为还是一个bug?

其次,我如何制作数组的副本并删除副本中的元素但不能删除原始元素?

有一件事让我觉得以上可能是一个javascript错误,这种行为只发生在数组而不是整数.例如:

window.onload = function() {
  var initial_variable = 1;
  var copy_initial_variable = initial_variable;
  copy_initial_variable = 2;
  alert('initial variable - ' + initial_variable);
};
//output: initial variable - 1
Run Code Online (Sandbox Code Playgroud)

如果行为是一致的,那么这应该输出,2因为分配可能是参考?

javascript

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

如何导出从异步函数中获取其值的变量

如果我的问题听起来很愚蠢,我深表歉意,但我发现在许多情况下我需要在许多文件中使用全局变量,例如代表数据库和 redis 客户端的变量,但是这些变量本身需要等待从 promises 或 async 中获取它们的值初始化与数据库或 redis 服务器的通信的函数。

我想做这样的事情

init.js:

export default async () => {
   return await initializeWhatever()
}
Run Code Online (Sandbox Code Playgroud)

数据库.js:

import init from './init'
let db = null
init().then(val => db = val)
export default db
Run Code Online (Sandbox Code Playgroud)

api.js:

import db from './db'
const doApi = req => {
 db('users').select({username:req.param.username})
}
Run Code Online (Sandbox Code Playgroud)

但是db导入的变量api.js始终为空,为什么在init()完成时它没有更新为正确的值?如果我使用 db 的方法是错误的,那么导出异步计算的全局变量的正确方法是什么?

javascript export es6-modules

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

为什么如果我将对象设置为新变量,它会保存变量的初始值?

我发现JavaScript的一些奇怪的行为,将变量作为参数传递给函数,这里是片段:

var notWorks = {
    aa: "string",
}

function why() {
    var thisWorks = notWorks;
    $.get("/echo/json").then(function() {
        printVal(notWorks);
        printVal(thisWorks);
    });
    notWorks = {};
}

function printVal(val) {
    console.log(val);
}
why();
Run Code Online (Sandbox Code Playgroud)

输出是:

Object {  }
Object { aa: "string" }
Run Code Online (Sandbox Code Playgroud)

对于变量notWorks,一切都很清楚 - 当变量已经被清除时,调用then()中的函数.但是为什么如果我将这个对象设置为一个新变量,它会保存变量的初始值?对象通过链接传递给功能,不是吗?

举例说明:https://jsfiddle.net/cev8m79y/

javascript

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

如何否定 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万
查看次数