js "Maximum Call Stack Size Exceeded" 오류 원인과 처리

hykang_opents·2025년 3월 20일

20250319
jquery.min.js 내부의
function dc(a, b, c, d)에서 순환참조에 걸려 해당 오류가 발생하였음.

function dc(a, b, c, d) {
var e;
if (n.isArray(b))
n.each(b, function(b, e) {
c || _b.test(a) ? d(a, e) : dc(a + "[" + ("object" == typeof e && null != e ? b : "") + "]", e, c, d)
});
else if (c || "object" !== n.type(b))
d(a, b);
else
for (e in b)
dc(a + "[" + e + "]", b[e], c, d)
}

해당 함수는 위와 같음.

문제가 발생한 원인 코드는

        dews.api.get(dews.url.getApiUrl("CZ", "EDISTG00100_Z20409_Service", "saveEDISTG00100_Z20409_ImportReport"), {
            async: false,
            data: {
                ...
                REPORT_TEL: self.txtTel.text(),
                STORAGE_CODE: self.searchStorageCode.text(),
                STORAGE_DESC: self.txtStorageDesc.text(),
                PRODUCT_TYPE: self.selectCargoType.value(),
                CONDITION_TYPE: '0',
                REPORT_ADDRESS: self.txtAddress.text(),
                W_CODE: self.txtWcode.text(),
                REPORT_ADDR_NO: self.txtAddr_no.text(),
                REPORT_ROAD_CODE: self.txtRoad_code.text(),
                REPORT_BUILDING_CODE: self.txtBuilding_code.text(),
                COUNT_ITEM: self.cntItem.text(),
                COUNT_QUANTITY: self.cntQuantity.text(),
                COUNT_WEIGHT: self.cntWeight.text(),
                **COUNT_USD: self.cntUsd**
            }

COUNT_USD에 String이 아닌 객체를 전달하여 전달받은 dc함수에서 재귀호출이 발생하였던것.

self.cntUsd.text()로 변경하여 해당 오류를 해결하였음.

0개의 댓글