// use double or single quotes var str = 'foo'; // numbers are double-precision 64-bit format IEEE 754 values // http://www.ecma-international.org/ecma-262/5.1/#sec-8.5 var num = 4.52; var boolVal = true; var regex = /abc/; var date = new Date();
function max(a, b) {
if (a > b) {
return a;
} else {
return b;
}
};
max(2, 3);
// 3
var min = function(a, b) {
...
}
min(2, 3);
// 2
var increment = function(num) {
return num + 1;
};
[1, 2, 3].map(increment);
// New array with:
// [2, 3, 4]
> var arr = [1, 2];
> arr.push(3);
> arr[1]
2
> arr.length
3
> for (var i = 0; i < arr.length; i++) {
.. console.log(i);
..}
0
1
2
> arr.reduce(function(a, b) { return Math.max(a, b); }, Number.MIN_VALUE);
3
> var person = {
.. name: 'Sheldon Cooper',
.. occupation: 'Theoretical Physicist'
.. brag: function() {
.. console.log('I am the smartest person on earth!');
.. }
..}
> person.name
'Sheldon Cooper'
> person[occupation]
'Theoretical Physicist'
> var person = {
.. name: 'Sheldon Cooper',
.. occupation: 'Theoretical Physicist'
.. brag: function() {
.. console.log('I am the smartest person on earth!');
.. }
..}
> person.age = 33
> person.age > 30
true
> person.brag();
I am the smartest person on earth!
var details = [];
for (property in person) {
if (person.hasOwnProperty(property)) {
details.push(person[property]);
}
}
console.log(details.join(', '));
// Sheldon Cooper, Theoretical Physisist, 33
Object.keys(person)
.map(function(property) { return person[property]; })
.join(', ');
// Sheldon Cooper, Theoretical Physisist, 33
var num = 10;
var even = num % 2 === 0;
if (even) {
console.log('Yep, %d is an even number!', num);
} else if (num > 10) (
console.log('You cheated, %d is larger than 10 ;-(', num);
} else {
console.error('WTF!?');
}
> true == '1' true > !0 == 1 true > '5' == 5 true
> true === '1' false > !0 === 1 false > '5' === 5 false
> 9999999999999999999 10000000000000000000 > 0.1 - 0.3 -0.19999999999999998 > Number.MIN_VALUE + 1 1
> for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 1000 /* millis */);
}
// 1 second later...
3
3
3
> (function() { // this actually creates a new scope
var b = 2
console.log(b);
})();
2
> console.log(b);
ReferenceError: b is not defined
( // turn the function declaration into an expression
function() {} // define a new function with a new lexical scope
)
(); // call the function
// in short
(function() { /* A new scope, hallelujah */ })();
var a = {
name: 'Leonard Hofstadter'
};
var b = Object.create(a);
var c = Object.create(b);
console.log(c.name);
// 'Leonard Hofstadter'
{ // c
__proto__: { // b
__proto__: { // a
name: 'Leonard Hofstadter'
}
}
}
function Person(name) {
this.name = name;
}
Person.prototype.getName = function() {
return this.name;
};
var p = new Person('Amy Farrah Fowler');
console.log(p.getName()); // 'Amy Farrah Fowler'
var getter = p.getName;
console.log(getter()); // undefined or '' (when run in a browser)
console.log(getter.call({ name: 'Penny' })); // 'Penny'
https://blog.codecentric.de/en/2012/11/javascript-function-contexts-this-proxy/