"alert" is not defined when running www.jshint.com
JavascriptJavascript Problem Overview
I fixed this by simply adding var alert;
However, is this what I should be doing to get the pesky error message to go away? Here is the fix. Here is the fail on www.jshint.com.
I'm trying to learn from the error it throws..not necessarily make them go away.
(function () {
"use strict";
var alert; // added this in to fix
function initialize_page()
{
alert ("hi");
}
addEventListener('load', initialize_page);
})();
Javascript Solutions
Solution 1 - Javascript
Instead of
alert('message')
you should use
window.alert('message');
Because this method is defined in window
object.
This of course assumes you have browser
option set to true
in your .jshintrc
, so this way jshint will know window object is exposed.
"browser" : true, // Standard browser globals e.g. window, document.
*The same thing happens with confirm()
.
Solution 2 - Javascript
This documentation says the following about the browser
option:
This option defines globals exposed by modern browsers: all the way from good ol' document and navigator to the HTML5 FileReader and other new developments in the browser world. Note: this option doesn't expose variables like alert or console. See option devel for more information.
and the following about the devel
option:
This option defines globals that are usually used for logging poor-man's debugging: console, alert, etc. It is usually a good idea to not to ship them in production because, for example, console.log breaks in legacy versions of Internet Explorer.
You have browser enabled and devel disabled. You can control these with checkboxes under "Assume" on the jshint original page. I also recommend heeding the warning in the documentation ;-)
Solution 3 - Javascript
Set "devel:true" in the Options. This enables things like Alert, console, etc.
See documentation here: http://jshint.com/docs/options/
Solution 4 - Javascript
Use .jshintrc
file or CTRL + , in VS Code, to edit options for jshint.
in js alert(data.status); or window.alert(data.status);
"window": true,
"alert": true
or best
"devel": true,
{
"esversion": 6,
"browser": true,
"undef": true,
"varstmt": true,
"forin": true,
"unused": true,
"funcscope": true,
"lastsemic": true,
"moz": true,
"jquery": true,
"module": true,
"devel": true,
"globals": {
"window": true,
"document": true,
"console": true,
"alert": true
}
}
Solution 5 - Javascript
function prod(arr) {
let largest = 0;
let secondLargest = 0;
const len = arr.length;
for (let i = 0; i < len; i++) {
if (arr[i] > largest) {
secondLargest = largest;
largest = arr[i];
}
else if (arr[i] < largest && arr[i] > second_largest) {
secondLargest = arr[i]
}
}
return largest * secondLargest;
}
console.log(prod([2, 4, 7, 8]));
Solution 6 - Javascript
Instead of:
alert('message')
I use:
var alert = window['alert'];
Solution 7 - Javascript
try passing window object in :
(function (global) {
"use strict";
var alert; // added this in to fix
function initialize_page()
{
global.alert ("hi");
}
addEventListener('load', initialize_page);
})(window);
Solution 8 - Javascript
declare alert as variable and it will work without any settings:
for example:
var alert;
alert('hello world');