gpt4 book ai didi

javascript - 为什么 JS 将 [ 'foo'] 解释为读取属性而不是数组声明

转载 作者:搜寻专家 更新时间:2023-11-01 00:16:32 24 4
gpt4 key购买 nike

Mocha Github 问题跟踪器上的这个问题很有趣

https://github.com/mochajs/mocha/issues/3180

此代码按预期工作:

describe('before/after with data-driven tests', () => {
before(() => console.log('before worked'));
beforeEach(() => console.log('beforeEach worked'));
afterEach(() => console.log('afterEach worked'));
after(() => console.log('after worked'));

['foo'].forEach((item) => {
it(`works for item ${item}`, () => {
console.log('item is', item)
})
})
})

但是这段代码表现得很奇怪:

describe('before/after with data-driven tests', () => {
before(() => console.log('before worked'))
beforeEach(() => console.log('beforeEach worked'))
afterEach(() => console.log('afterEach worked'))
after(() => console.log('after worked'))
[ 'foo' ].forEach((item) => {
it(`works for item ${item}`, () => {
console.log('item is', item)
})
})
})

如果您使用 mocha 执行第二个示例代码,它会尝试从 undefined variable 中读取“foo”。有谁知道为什么?这是错误跟踪:

    [ 'foo' ].forEach((item) => {
^

TypeError: Cannot read property 'foo' of undefined

很奇怪!但我确信有一个很好的解释。

最佳答案

原因是第二个例子中缺少;:

after(() => console.log('after worked'))
[ 'foo' ].forEach((item) => {
it(`works for item ${item}`, () => {
console.log('item is', item)
})
})

当没有分号时,这意味着“调用函数 after”并从它返回的结果中选择这个键。但是在返回 undefined 之后,你会得到错误。

关于javascript - 为什么 JS 将 [ 'foo'] 解释为读取属性而不是数组声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47984041/

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