You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript表达式求值困惑:为何判断结果不符合预期?

为啥你的表达式输出false?

嘿,这问题我刚入门JavaScript的时候也踩过同款坑!核心原因是运算符优先级在搞鬼。

你写的表达式:

console.log('isSuperAdmin ' + user.user_role === "SUPER_ADMIN");

JavaScript会先执行优先级更高的字符串拼接操作,也就是先算 'isSuperAdmin ' + user.user_role,得到字符串 'isSuperAdmin SUPER_ADMIN'。然后再拿这个长字符串和 "SUPER_ADMIN" 做全等比较(===),这俩显然不一样,所以结果就是false。

而你在开发者工具里单独看 user.user_role === "SUPER_ADMIN" 时,因为没有拼接干扰,自然会返回true。

正确的写法有两种:

  • 给比较部分加括号,强制让它先执行:

    console.log('isSuperAdmin ' + (user.user_role === "SUPER_ADMIN"));
    

    这样会先算出 user.user_role === "SUPER_ADMIN" 的结果true,再和字符串拼接,最终输出 isSuperAdmin true。

  • 用ES6的模板字符串(更推荐,可读性更高):

    console.log(`isSuperAdmin ${user.user_role === "SUPER_ADMIN"}`);
    

    模板字符串里的${}会先计算内部表达式的值,再嵌入到字符串中,结果和上面一致。

内容的提问来源于stack exchange,提问作者sanbhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:02:17