Uncaught SyntaxError: expected expression, got ';' (Magic numbers in Javascript)
Uncaught SyntaxError: expected expression, got ';' (Magic numbers in Javascript)
我有一个问题,之前 HTML / Javascript 的一个完全工作的部分在非常具体的情况下抛出错误。
抛出的错误是:
Uncaught SyntaxError: expected expression, got ';'
记录在浏览器控制台中。此错误仅在首次加载页面 时抛出,即在提交表单时抛出。刷新页面 总是 导致完美加载,没有任何形式的控制台错误。
javascript 是传单地图的内联脚本设置地图图标和传单地图的一些变量以及是否使用 Javascript 本地存储的标志:
<script>
/* Leaflet flags.... there are about 20 of these loaded */
var auxIcon = L.icon({
iconUrl: '/images/map_icons/auxIcon.png',
iconSize: [18, 24],
iconAnchor: [0, 24],
popupAnchor: [10, -20]
}); /*@*/
var vgsIcon = L.icon({
iconUrl: '/images/map_icons/VGS_30.png',
iconSize: [25, 30],
iconAnchor: [0, 30],
popupAnchor: [10, -15]
}); /*@*/
var zoomValueLevel = 5; /*@*//* Map zoom level */
var useLS = 1; /*@*//* Use local storage for Leaflet map position? */
if(useLS === true && localStorage.getItem('zoomLevel')) {
zoomValueLevel = parseInt(localStorage.getItem('zoomLevel'));
}
...
...
</script>
错误总是表明 ;
有问题,需要一个表达式。但是这个错误出现在各个不同的地方,显然是任意的。
错误发生在上面标记为 /*@*/
的每个位置,
我不知道为什么会发生这种情况,但以前从未发生过。 Stack Overflow 上与非常相似的错误反馈相关的各种其他问题突出了语法错误或问题,但我看不出这里有什么问题,但在重新加载时总是正确的,而实际上什么都没有改变。
所以我发现了它是什么;
我仔细查看了变量设置;并发现 zoomValueLevel
和 useLS
变量都使用了 JSHint(在 PhpStorm 上)抱怨“幻数”的东西;这些值在某种程度上是特殊的,因此变量被赋予一个不带引号的数值。
所以;我做了两件事:我将标志值更新为真布尔值而不是 0/1 伪布尔值,因此它的输出实际上是 true
或 false
并且我将缩放级别设置为相同的数字值和以前一样,但在单引号内。
我不知道为什么这个错误只在第一次加载页面时出现而其他时候没有错误,我也不知道为什么这个错误以前没有出现过,但解决方案似乎是是删除 JSHint 所谓的“幻数”,并始终将数字用引号括起来,并使用布尔标志变量的完整文本表示。
var zoomValueLevel = '5';
var useLS = true;
这立即解决了问题,并且页面现在在加载时不再反馈任何控制台错误。我希望这对某人有用。
我有一个问题,之前 HTML / Javascript 的一个完全工作的部分在非常具体的情况下抛出错误。
抛出的错误是:
Uncaught SyntaxError: expected expression, got ';'
记录在浏览器控制台中。此错误仅在首次加载页面 时抛出,即在提交表单时抛出。刷新页面 总是 导致完美加载,没有任何形式的控制台错误。
javascript 是传单地图的内联脚本设置地图图标和传单地图的一些变量以及是否使用 Javascript 本地存储的标志:
<script>
/* Leaflet flags.... there are about 20 of these loaded */
var auxIcon = L.icon({
iconUrl: '/images/map_icons/auxIcon.png',
iconSize: [18, 24],
iconAnchor: [0, 24],
popupAnchor: [10, -20]
}); /*@*/
var vgsIcon = L.icon({
iconUrl: '/images/map_icons/VGS_30.png',
iconSize: [25, 30],
iconAnchor: [0, 30],
popupAnchor: [10, -15]
}); /*@*/
var zoomValueLevel = 5; /*@*//* Map zoom level */
var useLS = 1; /*@*//* Use local storage for Leaflet map position? */
if(useLS === true && localStorage.getItem('zoomLevel')) {
zoomValueLevel = parseInt(localStorage.getItem('zoomLevel'));
}
...
...
</script>
错误总是表明 ;
有问题,需要一个表达式。但是这个错误出现在各个不同的地方,显然是任意的。
错误发生在上面标记为 /*@*/
的每个位置,
我不知道为什么会发生这种情况,但以前从未发生过。 Stack Overflow 上与非常相似的错误反馈相关的各种其他问题突出了语法错误或问题,但我看不出这里有什么问题,但在重新加载时总是正确的,而实际上什么都没有改变。
所以我发现了它是什么;
我仔细查看了变量设置;并发现 zoomValueLevel
和 useLS
变量都使用了 JSHint(在 PhpStorm 上)抱怨“幻数”的东西;这些值在某种程度上是特殊的,因此变量被赋予一个不带引号的数值。
所以;我做了两件事:我将标志值更新为真布尔值而不是 0/1 伪布尔值,因此它的输出实际上是 true
或 false
并且我将缩放级别设置为相同的数字值和以前一样,但在单引号内。
我不知道为什么这个错误只在第一次加载页面时出现而其他时候没有错误,我也不知道为什么这个错误以前没有出现过,但解决方案似乎是是删除 JSHint 所谓的“幻数”,并始终将数字用引号括起来,并使用布尔标志变量的完整文本表示。
var zoomValueLevel = '5';
var useLS = true;
这立即解决了问题,并且页面现在在加载时不再反馈任何控制台错误。我希望这对某人有用。