Sans doute un des points les plus compliqués ...
En JavaScript, comme spécifié par ECMAScript 5, tous les objets (non primitifs) sont évalués à true
(on dit en anglais qu'ils sont truthy). Certains sont évalués à false
(ils sont dits falsy) :
- falsy :
undefined
,null
,false
,+0
,-0
,NaN
,''
- truthy : tous les autres
Tous ? En JavaScript oui. Mais lorsqu'on se trouve côté client (donc avec l'objet window
en plus), il y a un intru dans le DOM qui résiste à la norme. Il s'agit de document.all
.
Pourquoi ? Pour ne pas casser certains sites archaïque qui utilisaient cette propriété dépréciée afin de différencier Netscape de IE5.
(function (root, factory) { | |
if (typeof exports === 'object') { | |
// CommonJS | |
module.exports = factory(require('b')); | |
} else if (typeof define === 'function' && define.amd) { | |
// AMD | |
define(['b'], function (b) { | |
return (root.returnExportsGlobal = factory(b)); | |
}); | |
} else { |
MEAN - A Modern Stack: MongoDB, ExpressJS, AngularJS, NodeJS. (BONUS: Passport User Support).
https://heroku.com, gratuit jusqu'à 512 de RAM
# Installation du client Heroku
wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
parseInt
est pratique. Il est embarqué nativement dans JavaScript et permet de convertir une chaîne de caractère (String
) en entier. JavaScript étant permessif historiquement1, n'importe quelle valeur peut lui être passée. Il va silencieucesment la convertir en String
(à l'aide de la méthode toString
embarquée nativement dans chaque instance d'Object
), puis effectuer le parseInt
.
D'où :
parseInt("0.0000008", 10); // 0, ok tout va bien
parseInt(0.0000008, 10); // 8 WTF ?!
Etapes (grossières) de parseInt(nb)
sous le capot 2 :
What are we trying to observe? Raw object data.
// Objects
var obj = { id: 2 };
obj.id = 3; // obj == { id: 3 }
// Arrays
var arr = ['foo', 'bar'];
arr.splice(1, 1, 'baz'); // arr == ['foo', 'baz'];
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc | |
. ~/.bashrc | |
mkdir ~/local | |
mkdir ~/node-latest-install | |
cd ~/node-latest-install | |
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 | |
./configure --prefix=~/local | |
make install # ok, fine, this step probably takes more than 30 seconds... | |
curl https://npmjs.org/install.sh | sh |
Cet article présente les différentes manières de faire de l'héritage en JavaScript. Il répondra aussi à ces questions :
- Y a t il des classes en JavaScript comme dans les autres langages ?
- Quelles sont les différentes façons de faire de l'héritage en JavaScript ?
- Quelle est la bonne pratique ?
function getDaysInYear(year,day){ | |
var d=new Date(year,0), dates=[]; | |
d.setDate(d.getDate()+(7+day-d.getDay())%7); | |
while(d.getFullYear()===year){ | |
dates.push(new Date(d)); | |
d.setDate(d.getDate()+7); | |
} | |
return dates; | |
} |