首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误- [JSC_UNDEFINED_VARIABLE]变量previousPage未声明-Google闭包编译器

错误- [JSC_UNDEFINED_VARIABLE]变量previousPage未声明-Google闭包编译器
EN

Stack Overflow用户
提问于 2019-12-04 13:25:01
回答 1查看 855关注 0票数 0

我正在使用Google闭包模板编译2个JS文件。出于某种原因,它根本不喜欢我的箭头函数。例如:

代码语言:javascript
运行
复制
// let showCurrentPage;
showCurrentPage = (i) => {
    currentPage = i;
    paginationCountLogic(bookMarksArray);
}

如果我更改为不同的函数类型,例如:

代码语言:javascript
运行
复制
    let showCurrentPage = function(i) {
        currentPage = i;
        paginationCountLogic(bookMarksArray);
    }

我的函数可以在我的JS文件中使用或识别。

'showCurrentPage‘是声明的,但它的值永远不是read.ts(6133)。

我的代码运行良好,无需编译。我已经搜索了几个小时了,但我似乎无法解决这个问题。

我甚至尝试将NPM命令从ES6编译为ES5。但这似乎并没有解决这个问题:

代码语言:javascript
运行
复制
npx google-closure-compiler --js=app.js --js=pagination.js  --compilation_level ADVANCED_OPTIMIZATIONS --language_in ECMASCRIPT6  --language_out ECMASCRIPT5 --js_output_file=minified.js

有什么想法吗?

以下是实际错误:

代码语言:javascript
运行
复制
pagination.js:43: ERROR - [JSC_UNDEFINED_VARIABLE] variable showCurrentPage is undeclared
    showCurrentPage = (i) => {
    ^^^^^^^^^^^^^^^
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-17 18:47:10

我通过另一个问题得到了答案。但事实证明这就是为什么:

原因可能是编译器没有看到调用的函数。高级编译的一部分是删除未使用的代码并重命名方法/变量。

在js或html中,它从不被调用,因为函数调用仅在以下字符串值中定义:

代码语言:javascript
运行
复制
for (var i = 0; i < individualPagesArray.length; i++) {
   document.getElementById("numbers").innerHTML += `<button onclick=showCurrentPage(${i+1})>` + individualPagesArray[i] + `</button>`;
}

您可以很简单地通过重写以下内容来解决这个问题:

代码语言:javascript
运行
复制
window.showCurrentPage = (i) => {

对此:

代码语言:javascript
运行
复制
window['showCurrentPage'] = (i) => {

请参阅:https://developers.google.com/closure/compiler/docs/api-tutorial3#removal

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59177109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档