這是一個SSCCE。如何使JavaScript在這種情況下以更明顯的方式失敗
考慮下面的代碼:
<html>
<head>
<script type="text/javascript">
window.addEventListener("load", eventWindowLoaded, false);
var eventWindowLoaded = function() {
console.log('event window loaded');
};
</script>
</head>
<body>
</body>
</html>
它不工作,但問題不在於如何解決它。問題是,爲什麼當eventWindowLoaded
變量尚未分配時,JavaScript會失敗。在Chrome中進行調試時,控制檯上看不到任何內容,並且沒有任何跡象表明出現問題。代碼只是默默地失敗。我需要哪些選項/工具來確保在開發JavaScript的過程中失敗更爲驚人? ("use strict";
也不做)。
查看像eslint這樣的工具:http://eslint.org/它允許您定義規則(如*在將變量分配給*之前沒有使用變量),並且如果不遵循這些規則則會拋出錯誤。 – nils
變量已經存在,因爲變量提升,所以你的代碼在技術上不包含錯誤,它什麼也不做。 – Shilly
我第二次@nils的評論 - 代碼本身並沒有失敗 - 它的表現完全如寫。在開發階段使用靜態分析器而不是在運行時會發現這些問題。對於這個特定的,jslint顯示「'eventWindowLoaded'超出了範圍。」 –