我正在练习使用Tenary运算符,但结果显示为未定义。我不知道我在这段代码中在哪里做错。你能帮我吗?
let userName = prompt(`Enter Your User Name`);
let pass = prompt(`Enter Your Password`);
let message;
(userName === `Employee` && pass === 1234) ? message = `Hello ${userName}`:
(userName === `Director` && pass === 4567) ? message = `Hello ${userName}` :
(userName === `` || pass === ``) ? message = `One or More field is blank` : `Denied`;
console.log(message);
答案 0 :(得分:1)
您需要在表达式外添加一个赋值。
然后,您需要检查字符串,因为prompt
返回null
来取消或返回一个字符串。
另一个提示,如果template literal不包含动态内容,请改用字符串,这样会更快并且不会引起不适。
警告:请不要使用这种嵌套结构。容易出错,可以替换为功能并提前退出。
let userName = prompt('Enter Your User Name');
let pass = prompt('Enter Your Password');
let message = userName === 'Employee' && pass === '1234'
? `Hello ${userName}`
: userName === 'Director' && pass === '4567'
? `Hello ${userName}`
: userName === '' || pass === ''
? 'One or More field is blank'
: 'Denied';
console.log(message);
答案 1 :(得分:1)
条件运算符的想法是,它形成一个表达式,该表达式的计算结果为结果值,因此可以将其用于例如在
const message = …
不过,您已经将赋值表达式用作其操作数,这使得它只是if
/ else
语句的较差副本:
if (userName === `Employee` && pass === 1234) message = `Hello ${userName}`
else if (userName === `Director` && pass === 4567) message = `Hello ${userName}`
else if (userName === `` || pass === ``) message = `One or More field is blank`
else `Denied` ;
在最后一个块中,您忘记了分配,因此message
变量保留了其undefined
的值。
应该是
const message = (userName === `Employee` && pass === 1234)
? `Hello ${userName}`
: (userName === `Director` && pass === 4567)
? `Hello ${userName}`
: (userName === `` || pass === ``)
? `One or More field is blank`
: `Denied`;
答案 2 :(得分:1)
您正在使用===
运算符(检查值和类型)将pass变量与Number类型进行比较,但实际上提示执行的操作是将String类型设置为pass。
如果您希望它起作用,只需将代码更改为以下内容即可:
let userName = prompt(`Enter Your User Name`);
let pass = prompt(`Enter Your Password`);
let message;
(userName === `Employee` && pass === "1234") ? message = `Hello ${userName}`:
(userName === `Director` && pass === "4567") ? message = `Hello ${userName}` :
(userName === `` || pass === ``) ? message = `One or More field is blank` : `Denied`;
console.log(message);```
答案 3 :(得分:1)
如果您只有这3-4个条件,我建议使用const styles = StyleSheet.create({
header: {
flexDirection: 'row',
zIndex: 10000,
elevation: 5,
marginBottom: 8 * 2,
},
container: {
flex: 1,
paddingTop: Constants.statusBarHeight,
backgroundColor: '#ecf0f1',
padding: 8,
},
card: {
backgroundColor: '#fff',
padding: 8,
elevation: 3,
shadowColor: '#000',
shadowOffset: { width: 1, height: 1 },
shadowOpacity: 0.15,
margin: 10,
},
});
语句而不是三元语句
并且不会超出那个范围
注意:避免使用嵌套三元运算符。
if
选项2
如果您可能有更多这样的选择,请尝试这种方法 注意:这只是一个伪代码,您可能必须对其进行更改才能使其起作用:)
const userName = prompt(`Enter Your User Name`);
const pass = prompt(`Enter Your Password`);
let message = 'Denied';
if (userName === `Employee` && pass === 1234) {
message = `Hello ${userName}`;
} else if (userName === `Director` && pass === 4567) {
message = `Hello ${userName}`;
} else if (userName === '' || pass === '') {
message = `One or More field is blank`;
}
console.log(message);