[self-contest] So you think you can dance ehm Javascript?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Topicstarter
Even wat lichtere materie en kijken of dit aanslaat...

Als je bezig bent met Javascript (op welk niveau dan ook) dan zijn de volgende 2 testen leuk om te doen :)

Ik heb ze van twee verschillende websites afgehaald, omdat (op iig 1) alle antwoorden gewoon uitgelegd zijn en we hier wellicht nog een beetje kunnen napraten ;)



Probeer ze niet te runnen, maar gewoon zelf te bedenken wat de antwoorden zijn en stel hier ook je vragen (mocht je er niet uitkomen). Vragen kan je gewoon stellen, maar misschien wel zo liev (voor je mede-users) om spoilers in de spoiler-tag te plaatsen. ;)

Even wat leidraad:


Vraag 1 - 5
[list]• Geef aan wat het resultaat is van het script :)


Vraag 6 -19
[list]
• Questions are multiple choice with only one possible answer
• ECMAScript 3rd edition (not 5th)
• Implementation quirks do not count (assuming standard behavior only)
• Every snippet is run as a global code (not as eval or function one)
• There are no other variables declared (and host environment is not extended with anything beyond what’s defined in specs)
• Answer should correspond to exact return value of entire expression/statement (or last line)
• “Error” in answer indicates that overall snippet results in a runtime error



1

JavaScript:
1
2
3
4
if (!("a" in window)) {
    var a = 1;
}
alert(a);



2

JavaScript:
1
2
3
4
5
var a = 1,
    b = function a(x) {
        x && a(--x);
    };
alert(a);



3

JavaScript:
1
2
3
4
5
function a(x) {
    return x * 2;
}
var a;
alert(a);



4

JavaScript:
1
2
3
4
5
function b(x, y, a) {
    arguments[2] = 10;
    alert(a);
}
b(1, 2, 3);



5

JavaScript:
1
2
3
4
function a() {
    alert(this);
}
a.call(null);



6

JavaScript:
1
2
3
(function(){ 
  return typeof arguments;
})();

a. "object"
b. "array"
c. "arguments"
d. "undefined"


7

JavaScript:
1
2
var f = function g(){ return 23; };
typeof g();

a. "Number"
b. "undefined"
c. "function"
d. Error


8

JavaScript:
1
2
3
4
(function(x){
  delete x;
  return x;
})(1);

a. 1
b. null
c. undefined
d. Error


9

JavaScript:
1
2
var y = 1, x = y = typeof x;
x;

a. 1
b. "number"
c. undefined
d. "undefined"


10

JavaScript:
1
2
3
(function f(f){ 
  return typeof f(); 
})(function(){ return 1; });

a. "number"
b. "undefined"
c. "function"
d. Error


11

JavaScript:
1
2
3
4
5
6
7
var foo = { 
  bar: function() { return this.baz; }, 
  baz: 1
};
(function(){ 
  return typeof arguments[0]();
})(foo.bar);

a. "undefined"
b. "object"
c. "number"
d. "function"


12

JavaScript:
1
2
3
4
5
var foo = {
  bar: function(){ return this.baz; },
  baz: 1
}
typeof (f = foo.bar)();

a. "undefined"
b. "object"
c. "number"
d. "function"


13

JavaScript:
1
2
var f = (function f(){ return "1"; }, function g(){ return 2; })();
typeof f;

a. "string"
b. "number"
c. "function"
d. "undefined"


14

JavaScript:
1
2
3
4
5
var x = 1;
if (function f(){}) {
  x += typeof f;
}
x;

a. 1
b. "1function"
c. "1undefined"
d. NaN


15

JavaScript:
1
2
var x = [typeof x, typeof y][1];
typeof typeof x;

a. "number"
b. "string"
c. "undefined"
d. "object"


16

JavaScript:
1
2
3
(function(foo){
  return typeof foo.bar;
})({ foo: { bar: 1 } });

a. "undefined"
b. "object"
c. "number"
d. Error


17

JavaScript:
1
2
3
4
5
    (function f(){
      function f(){ return 1; }
      return f();
      function f(){ return 2; }
    })();

a. 1
b. 2
c. Error (bijv. "Too much recursion")
d. undefined


18

JavaScript:
1
2
function f(){ return f; }
new f() instanceof f;

a. true
b. false


19

JavaScript:
1
with (function(x, undefined){}) length;

a. 1
b. 2
c. undefined
d. Error

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik had ze bijna allemaal goed. Ik ging de mist in bij 2 en 17, die feitelijk allebei dezelfde achterliggende reden hebben.
spoiler:
functions worden in de huidige scope gedefinieerd voordat de variabelen worden gedefinieerd, die mogelijk dus weer de functiedefinities overschrijven.

En bij 8.
spoiler:
blijkbaar kun je een lokale var dus niet deleten? iig niet in chrome :)


19 is verwarrend omdat de GoT syntax highlighter bugt, daar moet je even omheen kijken :P

[ Voor 25% gewijzigd door .oisyn op 09-02-2010 17:23 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Flink wat achtergrond bij 8 (want die had ik ook fout): http://perfectionkills.com/understanding-delete/

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Daar staan nogal wat fouten in. Ten eerste zeurt hij bij het allereerste codevoorbeeld over missende puntkomma's, maar een puntkomma is in javascript niet verplicht als het gedeelte tot aan de enter parseable is als full statement. Daarnaast begint hij over hoe functie-definities variabelen overschrijven, maar het is juist precies het omgekeerde. Alleen het voorbeeld wat hij gebruikt doet:
JavaScript:
1
2
3
function x() { }
var x;
alert(typeof x);

Ja, dan zal x idd nog een functie zijn, want de variabele x bestaat al als functie. Schrijf je echter
JavaScript:
1
2
3
function x() { }
var x = 1;
alert(typeof x);

dan is x een nummer, omdat door de assignment het type van x verandert. Er wordt sowieso in geen van beide gevallen een nieuwe x aangemaakt.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik neem aan dat die ';' over stijl ging en de fout in het genoemde boek sloeg op het gedeelte "and even deleted". Hij geeft toch ook precies zo'n voorbeeld?
JavaScript:
1
2
3
4
5
6
7
 /* `foo` is created as a property with DontDelete */
  function foo(){}
 
  /* Later assignments do not modify attributes. DontDelete is still there! */
  foo = 1;
  delete foo; // false
  typeof foo; // "number"
Verder heb ik het verticaal gelezen. ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:05

crisp

Devver

Pixelated

Ik had ze al langs zien komen en naar mijn collega's gespammed :P

De eerste quiz had ik in 1 keer alles goed, de tweede had ik bij de eerste poging twee (domme) foutjes. Het scheelt als je ooit een echte javascript parser onder handen hebt gehad :P

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 11:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat betwijfel ik - de grammatica alleen bepaalt niet wat er onder water gebeurt. Wat dat betreft is het jammer dat er geen prototyping zit verwerkt in de vragen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:05

crisp

Devver

Pixelated

.oisyn schreef op dinsdag 09 februari 2010 @ 20:46:
Dat betwijfel ik - de grammatica alleen bepaalt niet wat er onder water gebeurt. Wat dat betreft is het jammer dat er geen prototyping zit verwerkt in de vragen :)
Ik had wat specifieker moeten zijn, Narcissus is niet alleen een parser maar feitelijk een complete engine. Ik heb echter alleen de parser gebruikt maar heb de rest natuurlijk ook wel bekeken ;)

Met prototyping kan je inderdaad ook wel leuke dingen uithalen :) Of het gebruik van apply/call. Doet me weer denken aan Crossbrowser Array Generics :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

Dacht dat ik wel een aardig handje had in js, maar had ik toch echt 9 vragen fout... Toch maar even gaan kijken waarom het fout was.

"True skill is when luck becomes a habit"
SWIS

Pagina: 1