Cycymomo
2/6/2014 - 4:46 PM

quiz-dvp-hardcore.js

quiz-dvp-hardcore.js

///////////////////////////////////////////
// Question 1
// D'après le code suivant, que retournera go() ?
var x = 3;

var foo = {
    x: 2,
    baz: {
        x: 1,
        bar: function() {
            return this.x;
        }
    }
}

var go = foo.baz.bar;

// Possibilité : 1, 2, 3, undefined
// Réponse : console.log(go()); // 3. 

// Selon le code précédent, que retournera foo.baz.bar() ?

// Possibilité : 1, 2, 3, undefined
// Réponse : console.log(foo.baz.bar()); // 1

///////////////////////////////////////////
// Question 2
// D'après le code suivant, que vaut bar.x ?

var x = 0;
function foo() {
    x++;
    this.x = x;
    return foo;
}
var bar = new new foo();

// Possibilité : 0, 1, undefined, TypeError: undefined is not a function
// Réponse : console.log(bar.x); // undefined

///////////////////////////////////////////
// Question 3 : 
// D'après le code suivant, que vaut b ?

function foo(a, b) {
    arguments[1] = 2;
    console.log(b); // que vaut b à cet instant ?
}
foo(1);

// Possibilité : 2, null, undefined
// Réponse : undefined. Alors que si on avait exécuté foo(1,'une valeur quelconque');, b aurait valu 2

///////////////////////////////////////////
// Question 4 : 
// D'après le code suivant, que vaut typeof foo() ?

function foo() {
    return
    {
        val: 1
    };
}

// Possibilité : "function", "undefined", "object", undefined
// Réponse : console.log(typeof foo()); // "undefined". Notez le retour à la ligne après return. Sans ce retour, le résultat aurait été "object". De plus, l'opérateur unaire typeof retourne toujours une string.

///////////////////////////////////////////
// Question 5 : 

// D'après le code suivant, que vaut foo.baz + foo.bar + bar; ?
var bar = 1,
    foo = {};

foo: {
    bar: 2;
    baz: ++bar;
};
foo.baz + foo.bar + bar; // ?

// Possibilité : TypeError, undefined, NaN, 4, 5, 6
// Réponse : NaN. Faites attention à la syntaxe. Ici on ne définit pas l'objet foo mais on crée des "label".https://developer.mozilla.org/fr/docs/XUL/label

///////////////////////////////////////////
// Question 6 : 

// D'après le code suivant, que vaut x ?

var x;
x = 1,000,000;

// Possibilité : 0, 1, undefined
// Réponse : 1. Si vous exécutez ce code, 0 est retourné. En effet, une suite d'expression avec l'opérateur ',' retourne le dernier, soit 000, donc 0. Alors que 1 est bien assigné à x.
// voir : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator