gpt4 book ai didi

javascript - 无法调用未定义的方法 'split' - 从函数调用

转载 作者:行者123 更新时间:2023-11-29 20:13:47 30 4
gpt4 key购买 nike

我有一个在加载时调用的 JS 函数,它会溢出一些变量,这一切都很好,但是当我从另一个函数调用该函数时,我得到这个错误 Cannot call method 'split' of undefined:

function loadInAttachmentsIntoSquads(){
// eg: 5000,5000,5000,5000 > [5000][5000][5000]
myAttachmentArray = currentAttachments.split(',');

//eg: [5000][5000][5000] > [5][0][0][0]
//myAttachmentForWeapon = myAttachmentArray[mySquadsIndex].split('');

setupWeaponAttachments();
}


function setupWeaponAttachments(){

myAttachmentForWeapon = myAttachmentArray[mySquadsIndex].split('');

//if(mySquadsIndex == 0){
if(myAttachmentForWeapon[1] == 1){ // if silencer is on? //first digit is always 5
weaponAttachments.silencer = true;
}
else{
weaponAttachments.silencer = false;
}
if(myAttachmentForWeapon[2] == 1){ // if silencer is on? //first digit is always 5
weaponAttachments.grip = true;
}
else{
weaponAttachments.grip = false;
}
if(myAttachmentForWeapon[3] == 1){ // if silencer is on? //first digit is always 5
weaponAttachments.redDot = true;
}
else{
weaponAttachments.redDot = false;
}

// -- applies visuals -- \\
applyWeaponAttachments();
}

如果我从另一个函数调用 setupWeaponAttachments(),我会得到那个错误...为什么?

最佳答案

在以下内容中:

> function loadInAttachmentsIntoSquads(){
>
> myAttachmentArray = currentAttachments.split(',');
>
> setupWeaponAttachments();
> }

标识符 currentAttachments 被用作全局变量。如果在调用函数时还没有赋值,或者它的值不是字符串,那么就会产生错误。

所以解决方法是确保它有一个字符串值:

function loadInAttachmentsIntoSquads(){
if (typeof currentAttachments != 'string') return;
...
}

或以其他方式处理错误。

此外,在执行所有这些 if..else block 的地方,请考虑:

weaponAttachments.silencer = myAttachmentForWeapon[1] == 1;
weaponAttachments.grip = myAttachmentForWeapon[2] == 1;
weaponAttachments.redDot = myAttachmentForWeapon[3] == 1;

它不会更快,但编写和读取的代码要少得多。

关于javascript - 无法调用未定义的方法 'split' - 从函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206240/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com