vue函数里加了if就报错,不加就正常?

正常的代码(没加if):

//发布
issue:function(){
    this.result = [];
    for(var i=0;i<this.formData.length;i++){
        let obj = {
            questionUid:this.formData[i].questionUid, //题目id
            questionType:this.formData[i].questionType, //1:单选题2多选题3填空题
            //填空
            userBlanksDetail:{
                answer:this.formData[i].fill
            },
            //单选(多选)
            userOptionDetail:{
                optionUid:this.formData[i].single?this.formData[i].single:this.formData[i].mul.join(',')
            }
        }
        this.result.push(obj);
    }
    this.submit(); //提交数据
},

加了if就报错:

//发布
issue:function(){
    this.result = [];
    for(var i=0;i<this.formData.length;i++){
        let obj = {
            questionUid:this.formData[i].questionUid, //题目id
            questionType:this.formData[i].questionType, //1:单选题2多选题3填空题
            //填空,加了if就报错
            if(this.formData[i].questionType == 3){
                userBlanksDetail:{
                    answer:this.formData[i].fill
                },
            }
            //单选(多选)
            userOptionDetail:{
                optionUid:this.formData[i].single?this.formData[i].single:this.formData[i].mul.join(',')
            }
        }
        this.result.push(obj);
    }
    this.submit(); //提交数据
},

clipboard.png

这是什么奇怪现象啊?

阅读 3k
5 个回答
对象里不能直接判断。。。如果一定要判断可以在对象之外判断完成之后,再定义对象。
for(var i=0;i<this.formData.length;i++){
        let obj ={};
        if(this.formData[i].questionType == 3){
         obj = {
            questionUid:this.formData[i].questionUid, //题目id
            questionType:this.formData[i].questionType, //1:单选题2多选题3填空题
            //填空
            userBlanksDetail:{
                answer:this.formData[i].fill
            },
            //单选(多选)
            userOptionDetail:{
                optionUid:this.formData[i].single?this.formData[i].single:this.formData[i].mul.join(',')
            }
        }
        }else{
            obj = {
            questionUid:this.formData[i].questionUid, //题目id
            questionType:this.formData[i].questionType, //1:单选题2多选题3填空题
            //单选(多选)
            userOptionDetail:{
                optionUid:this.formData[i].single?this.formData[i].single:this.formData[i].mul.join(',')
            }
        }
        }
        this.result.push(obj);
    }
if(this.formData[i].questionType == 3){
    userBlanksDetail:{
        answer:this.formData[i].fill
    },
}

改成

userBlanksDetail:{
    answer:this.formData[i].questionType == 3?this.formData[i].fill:''
},
这是什么奇怪现象啊?

你这是什么奇怪写法 恕我看不懂

这写法,有创意。。。你发明的吗?但javascript引擎不认识啊?

这是什么奇怪现象啊?

恕我直言, 这个写法别说放在vue里面, 就是放在react ng jquery 任何js运行程序中都不会成功!

没有人这么写, 语法就有问题. so:

let obj = {
    属性1: 'value1',
    属性2: 'value2',
    三元表达式属性: condition ? 'value1' : 'value2',
}

// 根据条件判断添加属性
if (条件) {
    obj['额外的属性'] = '这样添加'
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题