函数调用后未定义参数,仅在 Safari 上

问题描述 投票:0回答:2

我有一个错误,奇怪地只出现在 Safari 上(在版本 14.0.3 上进行测试):我有一个带有字符串参数(下面命名的值)的函数调用,一旦函数调用,该参数就会变为未定义。我以前从未在 Safari 上开发过,所以也许有一些我不知道的事情?

console.log(`value=${value}`); // value=something
const valueJT = await this._asyncBeautify(attr, value, false, CollUtil.TransMode.ALL, CollUtil.TagsMode.NONE);

...

async _asyncBeautify(attributeName, value, flatten = false, transMode = CollUtil.TransMode.NONE, display = CollUtil.TagsMode.NONE) {
console.log(`value=${value}`); // value=undefined
javascript safari
2个回答
2
投票

检查函数体中某处是否存在与

var
参数同名的
value
声明(UglifyJS 在压缩代码时经常这样做)。 WebKit 中存在一个已知问题,其中与参数同名的变量被错误提升


0
投票

我遇到了同样的问题,我通过更改默认设置解决了这个问题:

UglifyJS.minify(code, {
    /**
     * Due to problems with selecting variable names in build files,
     * include this option.
     * ==> merge_vars (default: true) — combine and reuse variables
     */
    compress: {
        merge_vars: false
    },
});

压缩选项:https://github.com/mishoo/UglifyJS?tab=readme-ov-file#compress-options

错误描述:https://github.com/mishoo/UglifyJS/issues/5818

© www.soinside.com 2019 - 2024. All rights reserved.