[英]function always returning false
對Javascript來說還很陌生,誰能告訴我為什么這個簡單的數組循環/字符串比較函數總是返回false? 它們都是字符串類型,數據是相同的,因此循環絕對應該返回true。 可能的語法錯誤? 還有一種更簡單的方法來運行此檢查。
function imageDuplicate(fileName)
{
$.each(previewImagesArray, function(index)
{
if(previewImagesArray[index].name == fileName)
return true;
});
return false
}
提前致謝。
您從匿名內部函數返回true,而不是從imageDuplicate
返回true,而是使用如下所示的標志變量
function imageDuplicate(fileName) {
var valid = false;
$.each(previewImagesArray, function (index) {
if (previewImagesArray[index].name == fileName) {
valid = true;
//to stop the iteration
return false
}
});
return valid
}
怎么樣呢:
function imageDuplicate(fileName)
{
return previewImagesArray.some(function(item)
{
return item.name === fileName;
});
}
重要提示:如果您需要在IE9 +上運行該版本,則該功能將在IE9 +上運行,請按照此處的polyfill說明進行操作。
其他職位樣本:
如注釋中所述, 從每個循環返回,而不是從函數返回。
試試這個
function imageDuplicate(fileName)
{
var isDuplicate = false;
$.each(previewImagesArray, function(index)
{
if(previewImagesArray[index].name == fileName){
isDuplicate = true;
return false; //exit from each loop
}
});
return isDuplicate;
}
function(index)
內部的代碼是一個單獨的函數,嵌套在imageDuplicate
內部。 該函數的返回值將由.each()
認為合適。
因此,從外部函數返回的唯一語句是return false
。
正如其他答案在代碼中所說明的那樣,您可以在imageDuplicate
的范圍內聲明一個變量,並可以訪問內部函數並修改該值,以便獲得所需的效果。
一種調整是直接使用該值
$.each(previewImagesArray, function (index, value) {
if (value.name == fileName) {
...
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.