相关疑难解决方法(0)

将全局变量传递给函数

为什么以下代码给我0而不是1?我希望我的函数更改在函数外声明的变量,但我不想在函数声明中指定变量.

that = 0;

function go(input) {
    input++;
}

go(that);

console.log(that);
Run Code Online (Sandbox Code Playgroud)

javascript scope

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

我不能复制数组

我不能复制数组.

var Mycollection = new Array("James","Jonh","Mary");
var Mycollection2 = Mycollection;
Run Code Online (Sandbox Code Playgroud)

第一个数组中的任何更改也会在第二个数组中进行.

Mycollection.pop();
console.log(Mycollection.toString()) // ["James","Jonh"]
console.log(Mycollection2.toString())// ["James","Jonh"]
Run Code Online (Sandbox Code Playgroud)

但是,当我使用文本类型的变量时,不会发生这种情况

javascript arrays web

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

硬拷贝与浅拷贝javascript

这可能是一个老问题,但我真的很好奇通过引用复制对象的性质作为javascript中的赋值.

意思是如果

var a = {}; 
var b = a;
a.name = "Renato";
console.log(b); 
Object {name: "renato"}
Run Code Online (Sandbox Code Playgroud)

我是javascript的新手,这引起了我的注意,有一个浅拷贝作为对象赋值的默认值.我搜索了一下,为了创建一个硬拷贝,你必须创建一个mixin.我想知道为什么这被选为默认值,因为它的转换似乎非常隐含.谢谢!

javascript

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

在JavaScript中使用"Out"参数

我正在使用Internet Explorer 8中的ActiveX控件来显示一个保存文件对话框,让用户选择文件名和文件类型(jpg,gif等).这些值传递给代码,然后以不同的方法用于保存文件.不幸的是,调用对话框的方法没有返回值,文件名和文件类型作为out参数传入.

方法的签名(用Visual Basic表示)如下所示:

Public Sub SaveFileDialog( _
   ByVal bstrDialogType As Variant, _
   ByRef pbstrFileName As String, _
   ByRef out_pvType As Long _
)
Run Code Online (Sandbox Code Playgroud)

两个ByRef参数是out参数.

我编写了以下JavaScript代码:

try
{
    var saveFileName, saveFileType; // out variables
    gxVideoPlayBack.SaveFileDialog("image", saveFileName, saveFileType);
    alert(saveFileName); // displays "undefined"
    alert(saveFileType); // displays "undefined"
}
catch(error)
{
    if(!error.number === -2147221484) // User clicked cancel.
    {  
        alert(error.message);
    }
}
Run Code Online (Sandbox Code Playgroud)

代码的工作原理是ActiveX控件生成它的对话框,我可以处理错误条件,但我似乎无法弄清楚如何捕获out参数的值.

在代码中,gxVideoPlayBack是通过HTML元素对DOM中嵌入的ActiveX控件的引用.

如果JavaScript不能用于此,可以在VBScript中完成吗?

作为替代方案,我可以实现自己的对话框,但宁可使用提供的对话框.

javascript internet-explorer activex

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

在JavaScript中克隆对象

考虑下面的代码或检查这个小提琴.

var obj = {
    name: "abc",
    age: 20
}

var objTwo;

console.log(obj.age);
objTwo = obj;
objTwo.age = 10;
console.log(obj.age);
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为obj的对象,它有两个属性.现在我将obj分配给另一个名为objTwo的对象.现在我更新objTwo中的一个属性.同样的变化也反映在obj上.如何在不创建引用的情况下将值从一个对象分配给另一个对象?

javascript clone object

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

jQuery UI Autocomplete Widget:在"response"事件中修改响应数据没有任何效果

来自JQuery UI文档:

(response事件是)在搜索完成之后,在显示菜单之前触发.对于建议数据的本地操作很有用.

(ui.content参数)包含响应数据,可以修改以更改将显示的结果.

Hoewever,如果我ui.contentresponse事件进行修改,它不会影响下拉列表中显示的结果,而是忽略我的代码.这是我的(测试)代码:

$('input.autocomplete').autocomplete({
    source: new Array({label: 'test1', value: 'test1'}, {label: 'test2', value: 'test2'}),
    response: function( event, ui ) {
        ui = {content: new Array({label: 'test3', value: 'test3'}, {label: 'test4', value: 'test4'})};
    }
});
Run Code Online (Sandbox Code Playgroud)

理论上,如果术语是"t",它应该将test3test4显示为我的自动完成选项,但事实并非如此.我得到test1test2.

我错过了什么?

我正在使用1.9.2版,以防你想要指向我的这个帖子.

jquery jquery-ui jquery-ui-autocomplete

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

JavaScript`bind`方法无法按预期工作

以下控制器工作没有问题.

 app.controller('foo', ['$scope',function ($scope) {
        $scope.delete = function(){
            bar($scope);
         }
    }]);
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法使其更清洁bind:

 app.controller('foo', ['$scope',function ($scope) {
        $scope.delete = bar.bind(null, $scope);
    }]);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个表单不能按预期工作,并且$scope总是在绑定方法(bar此处)中提供旧版本的$ scope ,即使在$ scope更改为引用不同的值之后也是如此.这有什么问题?

还有什么?

如果我不在bind这里使用,还有什么选择?

javascript bind angularjs

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

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

如果我的问题听起来很愚蠢,我深表歉意,但我发现在许多情况下我需要在许多文件中使用全局变量,例如代表数据库和 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
查看次数

为什么 React 必须使用 setState 进行状态更新?

为什么 react 必须使用 setState 更新状态(树协调)。而不是简单地初始化 this.state.color = 'red'; 假设颜色的先前值为“绿色”。

reactjs

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

是否值得在Java Script中创建LinkedList

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

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

javascript arrays performance memory-management linked-list

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