gpt4 book ai didi

javascript - boolean 值应为 TRUE 时为 FALSE

转载 作者:行者123 更新时间:2023-11-29 23:54:29 25 4
gpt4 key购买 nike

我有一个组件使用 node-horseman 登录 Google 并操作 Google Alerts 的 UI,创建 RSS Feed。在我的项目中,我检查用户是否有模块生成的 cookies.txt 文件,以检查它是否应该登录 Google 或是否已被允许创建 RSS Feed。

负责呈现表单的组件:

import React, { Component, PropTypes } from 'react'
import NewRSSForm from './NewRSSForm'
import LoginForm from './LoginForm'

class GoogleAlerts extends Component {
render() {
const {
hasCookies,
createRSSFeed,
createRSSFeedSuccess,
loginGoogle,
loginGoogleSuccess
} = this.props

return (
<div>
{
hasCookies
? <NewRSSForm
createRSSFeed={createRSSFeed}
createRSSFeedSuccess={createRSSFeedSuccess}
/>
: <LoginForm
loginGoogle={loginGoogle}
loginGoogleSuccess={loginGoogleSuccess}
/>
}
</div>
)
}
}

GoogleAlerts.propTypes = {
hasCookies: PropTypes.bool,
createRSSFeed: PropTypes.func,
createRSSFeedSuccess: PropTypes.bool,
loginGoogle: PropTypes.func,
loginGoogleSuccess: PropTypes.bool,
}

export default GoogleAlerts

简单易行。端点检查用户 id 查找的文件是否存在,这是文件所在文件夹的名称,并返回 truefalse

* hasCookies() {
return fs.existsSync(User.cookiesLocation(this.id))
}

模型 User 有一个静态方法来返回 cookie 存储和读取位置的默认路径:

static cookiesLocation(userID) {
return `cookies/${userID}/cookies.txt`
}

通过检查返回值,我可以清楚地看到它是正确的,无论是在有文件还是没有文件的情况下,但奇怪的是,当它为 false 时,组件显示的形式应该是当它为 true 时显示。我用 console.log 进行了测试,它也是正确的,但不知何故它坚持显示错误的结果。

最佳答案

您有两个问题:

(1) 您没有调用 hasCookies 函数,因此没有根据它的返回值进行评估,而是它的类型(将评估为 true 的函数)

(2)hasCookies 很可能作为 string 'false' 或 'true' 而不是 true 的 boolean 文字返回或 false

当 javascript 与非 boolean 文字进行比较时,它会将数据类型转换为 boolean 类型。

以下值被转换为 false:

  • 无;
  • NaN;
  • 0;
  • 空字符串(""); < -- 这个适用于你
  • 未定义。

因此,当您期望“false”在三元表达式中计算为 false 时,它实际上解析为 true。

解决方法:

关于javascript - boolean 值应为 TRUE 时为 FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42019932/

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