为什么两个分开计算的javascript字符串表达式不能一起正确计算?
我不明白为什么 1)为什么两个分开计算的javascript字符串表达式不能一起正确计算?,javascript,ternary-operator,Javascript,Ternary Operator,我不明白为什么 1) 'https://api.rest.com/v1/users/“+userId+”/resource/”和 2) resourceId?资源ID:'' 两者都能正确评估 但是,当我尝试在一行上进行评估时: 'https://api.rest.com/v1/users/'+userId+'/resource/'+resourceId?资源ID:'' 它只会计算第二个原始表达式(2) 这是什么原因?它被称为运算符优先级。字符串串联比三元运算符具有更高的优先级 解析器理解表达式
'https://api.rest.com/v1/users/“+userId+”/resource/”
和2)
resourceId?资源ID:''
两者都能正确评估 但是,当我尝试在一行上进行评估时:
'https://api.rest.com/v1/users/'+userId+'/resource/'+resourceId?资源ID:''
它只会计算第二个原始表达式(2) 这是什么原因?它被称为运算符优先级。字符串串联比三元运算符具有更高的优先级 解析器理解表达式
'https://api.rest.com/v1/users/'+userId+'/resource/'+resourceId?资源ID:''
为:
解析三元:
'https://api.rest.com/v1/users/“+userId+”/resource/“+resourceId
1.1:这反过来使用解析连接模式resourceId
'
https://api.rest.com/v1/users/“+userId+”/resource/“+(resourceId?resourceId:”)
每种优先级都有模式,如*、&&、==,等等。称为运算符优先级。字符串串联比三元运算符具有更高的优先级
解析器理解表达式'https://api.rest.com/v1/users/'+userId+'/resource/'+resourceId?资源ID:''
为:
解析三元:
'https://api.rest.com/v1/users/“+userId+”/resource/“+resourceId
1.1:这反过来使用解析连接模式resourceId
'
https://api.rest.com/v1/users/“+userId+”/resource/“+(resourceId?resourceId:”)
每种优先级都有模式,如*、&&、==,等等。行是什么
'https://api.rest.com/v1/users/' + userId + '/resource/' + resourceId ? resourceId : ''
does是连接三元运算符之前的所有内容,然后将该运算结果求值为truthy或not(它是),然后返回三元运算符的真正分支结果
Andre的回答建议您使用括号来获得预期的操作顺序,这将使您保持单行格式。行是什么
'https://api.rest.com/v1/users/' + userId + '/resource/' + resourceId ? resourceId : ''
does是连接三元运算符之前的所有内容,然后将该运算结果求值为truthy或not(它是),然后返回三元运算符的真正分支结果
Andre的回答建议您使用括号来获得期望的操作顺序,这样可以保持单行格式。您不能只在字符串串联上加上三元条件。这不是它们的工作方式。使用括号这是关于运算符优先级的。为什么4+5=9和0*4+5不是相同的原因。你不能只是在字符串连接上加上三元条件。这不是它们的工作方式。使用括号这是关于运算符优先级的。同样的原因,为什么4+5=9和0*4+5不是。