@kangax created a new interesting quiz, this time devoted to ES6 (aka ES2015). I found this quiz very interesting and quite hard (made myself 3 mistakes on first pass).
Here we go with the explanations:
(function(x, f = () => x) {| const isB = (str) => { | |
| const strArr = str.split(''); | |
| const stack = []; | |
| for (let char of strArr) { | |
| if (char.startsWith('[') || char.startsWith('(')) { | |
| stack.push(char); | |
| } else { | |
| // Первый символ строки не открывающаяся скобка, значит уже не верно |
| console.log(1); | |
| (_ => console.log(2))(); | |
| eval('console.log(3);'); | |
| console.log.call(null, 4); | |
| console.log.apply(null, [5]); | |
| new Function('console.log(6)')(); | |
| Reflect.apply(console.log, null, [7]) | |
| Reflect.construct(function(){console.log(8)}, []); | |
| Function.prototype.apply.call(console.log, null, [9]); | |
| Function.prototype.call.call(console.log, null, 10); |
| const If = (cond) => (truly) => (falsy) => [truly, falsy][!cond + 0]() | |
| const result = If(false)(() => 'true')(() => 'false') |
| enum Event { | |
| enum app: String { | |
| case install = "app install" | |
| case launch = "app launch" | |
| } | |
| enum list: String { | |
| case created = "list created" | |
| case deleted = "list deleted" | |
| case refreshed = "list refreshed" |
| var loading = {}, | |
| loaded = {}, | |
| head = document.getElementsByTagName('head')[0], | |
| runCallbacks = function (path, type) { | |
| var cbs = loading[path], cb, i = 0; | |
| delete loading[path]; | |
| while (cb = cbs[i++]) { | |
| cb[type] && cb[type](); | |
| } | |
| }, |
@kangax created a new interesting quiz, this time devoted to ES6 (aka ES2015). I found this quiz very interesting and quite hard (made myself 3 mistakes on first pass).
Here we go with the explanations:
(function(x, f = () => x) {| var loading = {}, | |
| loaded = {}, | |
| head = document.getElementsByTagName('head')[0], | |
| runCallbacks = function(path, type) { | |
| var cbs = loading[path], cb, i = 0; | |
| delete loading[path]; | |
| while(cb = cbs[i++]) { | |
| cb[type] && cb[type](); | |
| } | |
| }, |
| /** | |
| * @module input_type_tel | |
| */ | |
| modules.define( | |
| 'input', | |
| ['i-bem__dom', 'jquery'], | |
| function (provide, BEMDOM, jQuery, Input) { | |
| /* borschik:include:../../libs/intl-tel-input/build/js/intlTelInput.js */ |
| /** | |
| * @module Page | |
| */ | |
| modules.define( | |
| 'page', | |
| ['i-bem__dom', 'BEMHTML', 'jquery' 'modal'], | |
| function (provide, BEMDOM, BEMHTML, $, Modal) { | |
| /** | |
| * @exports |
| function sort(nums) | |
| { | |
| if (!nums.length) return nums; | |
| var a = [], b = [], p = nums[0]; | |
| for (var i = 1; i < nums.length; i++) | |
| { | |
| if (nums[i] < p) | |
| a[a.length] = nums[i]; |