Detecting an undefined object property

The usual way to check if the value of a property is the special value undefined, is: if(o.myProperty === undefined) { alert(“myProperty value is the special value `undefined`”); } To check if an object does not actually have such a property, and will therefore return undefined by default when you try to access it: if(!o.hasOwnProperty(‘myProperty’)) … Read more

JavaScript closure inside loops – simple practical example

Well, the problem is that the variable i, within each of your anonymous functions, is bound to the same variable outside of the function. ES6 solution: let ECMAScript 6 (ES6) introduces new let and const keywords that are scoped differently than var-based variables. For example, in a loop with a let-based index, each iteration through … Read more

How do I format a date in JavaScript?

If you need slightly less control over formatting than the currently accepted answer, Date#toLocaleDateString can be used to create standard locale-specific renderings. The locale and options arguments let applications specify the language whose formatting conventions should be used, and allow some customization of the rendering. Options key examples: day: The representation of the day. Possible … Read more

event.preventDefault() vs. return false

return false from within a jQuery event handler is effectively the same as calling both e.preventDefault and e.stopPropagation on the passed jQuery.Event object. e.preventDefault() will prevent the default event from occuring, e.stopPropagation() will prevent the event from bubbling up and return false will do both. Note that this behaviour differs from normal (non-jQuery) event handlers, … Read more

How can I change an element’s class with JavaScript?

Modern HTML5 Techniques for changing classes Modern browsers have added classList which provides methods to make it easier to manipulate classes without needing a library: document.getElementById(“MyElement”).classList.add(‘MyClass’); document.getElementById(“MyElement”).classList.remove(‘MyClass’); if ( document.getElementById(“MyElement”).classList.contains(‘MyClass’) ) document.getElementById(“MyElement”).classList.toggle(‘MyClass’); Unfortunately, these do not work in Internet Explorer prior to v10, though there is a shim to add support for it to IE8 … Read more

Creating multiline strings in JavaScript

Update: ECMAScript 6 (ES6) introduces a new type of literal, namely template literals. They have many features, variable interpolation among others, but most importantly for this question, they can be multiline. A template literal is delimited by backticks: var html = ` <div> <span>Some HTML here</span> </div> `; (Note: I’m not advocating to use HTML … Read more

How can I convert a string to boolean in JavaScript?

Do: var isTrueSet = (myValue === ‘true’); using the identity operator (===), which doesn’t make any implicit type conversions when the compared variables have different types. This will set isTrueSet to a boolean true if the string is “true” and boolean false if it is string “false” or not set at all. Don’t: You should … Read more

How can I check if an object is an array? [duplicate]

The method given in the ECMAScript standard to find the class of Object is to use the toString method from Object.prototype. if(Object.prototype.toString.call(someVar) === ‘[object Array]’) { alert(‘Array!’); } Or you could use typeof to test if it is a string: if(typeof someVar === ‘string’) { someVar = [someVar]; } Or if you’re not concerned about … Read more

What is the JavaScript version of sleep()?

2017 — 2021 update Since 2009 when this question was asked, JavaScript has evolved significantly. All other answers are now obsolete or overly complicated. Here is the current best practice: function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } Or as a one-liner: await new Promise(r => setTimeout(r, 2000)); Or const sleep = ms … Read more

What is the difference between call and apply?

The difference is that apply lets you invoke the function with arguments as an array; call requires the parameters be listed explicitly. A useful mnemonic is “A for array and C for comma.” See MDN’s documentation on apply and call. Pseudo syntax: theFunction.apply(valueForThis, arrayOfArgs) theFunction.call(valueForThis, arg1, arg2, …) There is also, as of ES6, the … Read more

error code: 521