簡體   English   中英

變量在函數中未定義

[英]Variable is undefined in function

我有一個用逗號分隔值的字符串:

var newVal = "9103174091,1231231232"
$(ctrl).val(DataReview.Encryption.formatPersonNmbr(newVal));

我用這個值調用一個函數:

function (val) {

        val = val.split(",");
        var newVal = "";
        for (var i = 0; i <= val.length; ++i)
        {
            val[i] = val[i].replace(/ /g, '');
            var newVal = val[i];

            if (val[i].length == 10 || val[i].length == 11 || val[i].length == 12) {
                if (val[i].length == 11) {
                    val[i] = val[i].substring(0, 6) + val[i].substring(7);
                }
                if (val[i].length == 10) {
                    var year = '20' + val[i].substring(0, 2);
                    var month = val[i].substring(2, 4);
                    var day = val[i].substring(4, 6);
                    var date = new Date(year, month - 1, day);

                    if (isNaN(date) == false) {
                        var currentDate = new Date();
                        if (date > currentDate) {
                            val[i] = '19' + val[i];
                        } else {
                            val[i] = '20' + val[i];
                        }
                    }
                }
            }

            newVal += val[i].substring(0, 8) + '-' + val[i].substring(8);   
        }

        return newVal;
    }

當我運行它時,我收到以下錯誤:

TypeError: val[i] is undefined
val[i] = val[i].replace(/ /g, '');

我不明白這怎么可能是未定義的? 我究竟做錯了什么?

您確定這是 for 循環的正確結束條件嗎?

for (var i = 0; i <= val.length; ++i)

或者你的意思是這樣的:

for (var i = 0; i < val.length; ++i)

這可能是由 1-off 錯誤引起的。 在最后一個元素評估為undefined之后訪問該元素。

例子

var list = [2, 4, 6, 8];

for (var i = 0; i <= val.length; i++){
  console.log(list[i]);
}

輸出

2
4
6
8
undefined

最后一次出現undefined因為val[4]沒有值,列表中的值只能訪問val[3] 它的索引達到 4,因為val.length返回 4,因為有四個元素。 使用小於或等於運算符允許發生此錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM