我有两个数组,分别是temp和final;
当我单击文件类型输入时,input.files将推送到临时文件,然后如果我按确认按钮:
1)最终将等于temp,
2)temp = []
现在,final具有临时对象,而temp将是一个空数组。
但是,当temp.push(input.files)发生时,最终数组将被同时推送,
下面只是一个演示,是否有可能导致结果推送到final?:
var temp = [];
var final = [];
temp = final;
$(document).on('click',function(evt){
var currentTarget = $(evt.currentTarget);
var result = currentTarget[0].files;
for (var x = 0; x < result.length; x++) {
temp.push(result); //when result push to temp,it push to final also
}
});
$(document).on('click', '.confirmButton', function () {
final = temp;
temp = [];
});
答案 0 :(得分:0)
Final
关键字用作变量,这是该语言的reserved keyword
。final
变量引用为temp
,因此每个变量中的任何更新都将指向相同的数据。理想情况下,您的代码应类似于:
var temp = [];
var finalData = [];
$("#fileUploaded").on('change', function(evt) {
var currentTarget = $(evt.currentTarget);
var result = currentTarget[0].files;
for (var x = 0; x < result.length; x++) {
temp.push(result);
}
});
$(document).on('click', '.confirmButton', function () {
finalData = temp;
temp = [];
console.log(finalData);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" multiple id="fileUploaded" />
<button class="confirmButton">confirm</button>