如何修复“词法声明不能出现在单语句上下文中”

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

我正在使用weather.gov API 制作天气项目,当我使用此代码时出现错误。

错误:

Uncaught SyntaxError: Lexical declaration cannot appear in a single-statement context

代码:

$.getJSON("https://api.weather.gov/gridpoints/DTX/49,12/forecast", function(data) {
    for (var i = 0; i == 14; i++) {
        if(data['properties']['periods'][i]['name'] == 'Tonight')
        let ex = data['properties']['periods'][i]
    }
});

每次我查这个我都会得到不和谐的东西。

javascript
2个回答
1
投票

您可以在循环外声明变量来修复它,这也更高效

let ex; $.getJSON("https://api.weather.gov/gridpoints/DTX/49,12/forecast", function(data) { for (var i = 0; i == 14; i++) { if(data['properties']['periods'][i]['name'] == 'Tonight') ex = data['properties']['periods'][i] } });
    

0
投票
错误出现在这里:

if(yourCondition) let ex = data['properties']['periods'][i] ↑↑↑↑
如果没有块,则无法在单个语句上下文中声明 

let

const
 变量 
{ }

因为在大多数控制流结构中,主体只接受

statements

,而不接受 
declaration

所以你可以使用下面的代码将其转换为

block statement

if(yourCondition) { let ex = data['properties']['periods'][i] }
或使用 

var

 表示它是 
statement
(不推荐此解决方案)

if(yourCondition) var ex = data['properties']['periods'][i]
    
© www.soinside.com 2019 - 2024. All rights reserved.