为什么你不能在ES6中命名常量提取

时间:2018-03-30 20:24:12

标签: javascript ecmascript-6

我是JavaScript的新手,我遇到了一个有趣的问题,当我尝试命名一个常量提取时我无法使用它,我想知道为什么?是不是每个声明都是编译器独有的?

例如

export const fetch = async ( url , method ) => {
    const options = {
        method: method,
        headers: {
            'Content-Type': 'application/json'
        }
    };

    try {

        const response = await fetch( url, options );
        return response.json();

    }
    catch ( e ) {
        throw e;
    }
};

1 个答案:

答案 0 :(得分:3)

常量可以具有任意名称,只要它由有效字符组成且不是reserved word

由于fetch是局部变量并且阴影全局fetchawait fetch( url, options )将导致相同本地函数的递归调用 - 并且可能会抛出错误,因为它从不调用{{1 (window.fetch),而且没有global.fetch

response.json()变量名称会产生误导,因为它可能与全局fetch混淆,并且当然不应该在这里使用,因为应该使用全局fetch,太