Код для проверки:
<!doctype html>
<html>
<head>
<charset utf-8>
<title>для длиннопоста</title>
</head>
<body>
<script>
"use strict";
var m = 0;
sad.stop = function() {
alert('Привет Pikabu!');
};
function beAwesome() {};
function sad() {
switch(m) {
case 0: m++
return true;
case 1: return sad;
};
};
//Вот здесь начинается все самое интересное;
if (sad() === true) {
sad().stop();
beAwesome();
};
</script>
</body>
</html>
<!doctype html>
<html>
<head>
<charset utf-8>
<title>для длиннопоста</title>
</head>
<body>
<script>
"use strict";
var m = 0;
sad.stop = function() {
alert('Привет Pikabu!');
};
function beAwesome() {};
function sad() {
switch(m) {
case 0: m++
return true;
case 1: return sad;
};
};
//Вот здесь начинается все самое интересное;
if (sad() === true) {
sad().stop();
beAwesome();
};
</script>
</body>
</html>
раскрыть ветку (5)
Принципиальную возможность ваш код показывает отлично, но от вашей функции sad() у меня просто кровь из глаз.
раскрыть ветку (4)
А что именно?)) Я только учусь, хотелось - бы знать как её улучшить. (написал самым простым способом - через switch);
раскрыть ветку (3)
У вашей функции инвариант, который крайне маловероятен на практике: "в первый раз верни true, во все последующие возвращай функцию". Я бы даже сказал, что если такой инвариант где-то возник, значит в этом месте всё очень хреново с архитектурой.
раскрыть ветку (1)
Только не "в первый раз верни true, во все последующие возвращай функцию", а "в первый раз верни true, во все последующие возвращай объект". И еще раз true может вернуться если обнулить m. Но так то да, ппц)
