相关疑难解决方法(0)

是否值得在Java Script中创建LinkedList

我目前正在开发一个项目,要求我遍历一个值列表,并在列表中已有的每个值之间添加一个新值.这将在每次迭代时发生,因此列表将呈指数级增长.我决定将列表实现为链接列表是个好主意.现在,JS没有默认的Linked List数据结构,创建一个没有问题.

但我的问题是,从头开始创建一个简单的链接列表是否值得,或者只是创建一个数组并使用splice()插入每个元素会更好吗?事实上,由于开销会不会降低效率?

javascript arrays performance memory-management linked-list

8
推荐指数
2
解决办法
2169
查看次数

论点和参考

考虑这个JavaScript函数:

var f = function (a) {
  console.log(a+" "+arguments[0]);
  a = 3;
  console.log(a+" "+arguments[0]);
}
Run Code Online (Sandbox Code Playgroud)

我希望a并且arguments[0]仅在函数的第二个语句之前引用相同的值.相反,它们似乎总是引用相同的值:f(2)原因

2 2
3 3
Run Code Online (Sandbox Code Playgroud)

f({foo: 'bar'})原因:

[object Object] [object Object]
3 3
Run Code Online (Sandbox Code Playgroud)

参数标识符和arguments标识符是否以特殊方式链接?

javascript

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

等到typeof存在变量会导致无限循环

我需要一个等待变量出现的函数.

function wait(variable, callback) {
    if (typeof variable !== "undefined")
        callback();
    else
        setTimeout(function () {
            wait(variable, callback);
        }, 0)
}
Run Code Online (Sandbox Code Playgroud)

使用下面的示例代码调用此函数会导致无限循环.

var a;
wait(a, function(){console.log('success')});
setTimeout(function(){a=1}, 1000)
Run Code Online (Sandbox Code Playgroud)

为什么?

javascript function typeof

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

如何在数组中存储对变量的引用?

我正在尝试创建一个将字符串映射到变量的数组.似乎数组存储变量的当前值,而不是存储对变量的引用.

var name = "foo";
var array = [];

array["reference"] = name;

name = "bar";

// Still returns "foo" when I'd like it to return "bar."
array["reference"];
Run Code Online (Sandbox Code Playgroud)

有没有办法让数组引用变量?

javascript

7
推荐指数
3
解决办法
2万
查看次数

为什么不通过引用方法传递原型更改?

Google Analytics最初使用的是_gaq [object Array].将数组传递给函数是在JavaScript中传递一个对象,因此通过引用.

(编辑:正如答案中所指出的,引用是按值传递的.有关JavaScript中引用/值传递的更多详细信息,请参阅/sf/answers/372043801/.)

下面的代码使用jQuery等待DOM加载,然后附加一个change事件,一旦用户更改<input/>字段,该事件将向Google Analytics发送虚拟网页浏览.

var _gaq = _gaq || [];
_gaq.push(['_setAccount', _gAAccount]);
_gaq.push(['_trackPageview']);

(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(ga, s);
})();

var Tracking = {
  trackInputs: function ($, gaObject) {
    var inputs = $('#signUp').find('input');
    inputs.bind('change', function () {
      gaObject.push(['_trackPageview', '/virtual/input']);
      console.log(gaObject); // Outputs: …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-analytics

7
推荐指数
2
解决办法
211
查看次数

修改函数内的变量

假设我有一个内联脚本标记,其代码非常简单,如下所示

(function() {
 var test = "This is a simple test";

 function modifyTest(s) {
  s = "Modified test text";
 };

 modifyTest(test);
 console.log(test) //Will still display "This is a simple test"

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

但是,如果我使用test = modifyTest(test); 更改应用我的问题是这个.这是在函数内部修改javascript变量的唯一方法,这意味着我必须始终这样做

source = function(source); 为了改变函数内部的变量,

或者我错过了阻碍我完成此操作的范围概念?

javascript function

7
推荐指数
2
解决办法
3万
查看次数

Javascript - 原始与引用类型

在下面的代码中,我们传递一个对象.所以,根据javascript我们传递了一个引用和操作.

var a = new Number(10);
x(a);
alert(a);

function x(n) {
n = n + 2;
}
Run Code Online (Sandbox Code Playgroud)

但是提醒10而不是12.为什么?

javascript pass-by-reference

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

javascript变量在原始变量更改后更改值

对原始变量进行新更改后,我无法维护变量的原始值。

\n\n

代码:

\n\n
(...)\ndata = Illumination.calculate_N(data)\ndata = Illumination.calculate_pi(data)\ndata = Illumination.calculate_kwh(data)\ndata = Illumination.calculate_ca(data)           \n\nlet data_base = data\n\nlet ca_base = data.ca\nlet kwh_base = data.kwh\nlet pi_base = data.pi\n\n(...)\n\ndata = Illumination.calculate_N(data)\ndata = Illumination.calculate_pi(data)\ndata = Illumination.calculate_kwh(data)\ndata = Illumination.calculate_ca(data)            \n\nlet data_proposto = data\n\nlet ca_proposto = data.ca\nlet kwh_proposto = data.kwh\nlet pi_proposto = data.pi\n\n-----------------------------------\nEXAMPLE:\nstatic calculate_ai(data){\n  data.ai = data.areaTotal*data.au\n  return data\n} \n
Run Code Online (Sandbox Code Playgroud)\n\n

预计原始变量(日期)的值将是 \xe2\x80\x8b\xe2\x80\x8bchanged,并且这种情况发生正确,但是,变量 data_base 和 data_proposto 没有保留其值

\n\n

计算结束时两个变量具有相同的值 \xe2\x80\x8b\xe2\x80\x8bas 变量日期

\n\n

变量 ca_proposto、ca_base 等正确存储其值 \xe2\x80\x8b\xe2\x80\x8b

\n\n

任何想法?

\n\n

变量 data_base 和 data_proposto 的唯一交互是它们与 data 变量的创建以及函数的返回 …

javascript node.js

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

Input(() 字段中的更改是否会传播到父组件?

我的理解是,我可以使用指令 @Input() 将数据传递给子组件,并使用 @Output() 和适当的发射将数据发送回父组件。但我不知道 @Input() 字段中的更改数据会发送到父级。它是否正确?

我修改了组件通信工作簿以重现此https://input-params.stackblitz.io

你可以解释吗?

谢谢,

typescript angular

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

Nodejs闭包变量未在模块中更新

我需要一些帮助来理解NodeJ.我显然缺少一些基本的东西.我有一个类似于以下的模块,使用基本的显示模块模式...

var someArray = [];

var publicApi = {
    someArray: someArray,
    someFunction: someFunction
};

function someFunction() {
    someArray = ['blue', 'green'];
}

module.exports = publicApi;
Run Code Online (Sandbox Code Playgroud)

当我使用这个模块时,someArray在我调用someFunction时没有改变...

var myModule = require('myModule');

myModule.someFunction();
var test = myModule.someArray;
// test is always an empty array
Run Code Online (Sandbox Code Playgroud)

请帮我理解原因.我意识到我可以使用构造函数来使用它,但我想填补我的知识,为什么以上不起作用.

更新:

我可以通过以下对模块的修改来实现这一点......

var theModule = {
    someArray: [],
    someFunction: someFunction
};

function someFunction() {
    theModule.someArray = ['blue', 'green'];
}

module.exports = theModule;
Run Code Online (Sandbox Code Playgroud)

但我仍然想明白为什么第一个模块中的代码不起作用.我正在处理的模块很好,作为一个单例,所以我很想看看在模块中有变量的最佳实践是什么,可以通过该模块中的函数进行更改,并且可以在该模块之外公开访问.

javascript closures node.js

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