Я предполагаю, что можно создать функцию JavaScript, которая отключит ее самостоятельно после ее выполнения.Отключить функцию JavaScript после ее запуска
Возможно ли? Как этот эффект может быть достигнут?
Я предполагаю, что можно создать функцию JavaScript, которая отключит ее самостоятельно после ее выполнения.Отключить функцию JavaScript после ее запуска
Возможно ли? Как этот эффект может быть достигнут?
Wrap произвольным работоспособным в следующем порядке:
function once(subject) {
var first = true;
return function() {
if (first) {
first = false;
return subject();
} else {
return null;
}
};
}
var wrapper = once(function() {alert("No more!");});
wrapper(); // alerts
wrapper(); // noop
Runnable будет выполнен только при первом вызове обертки.
convert a function of arbitrary arguments to an argumentless runnable.
что-то вроде этого?
function a(){ alert(1); a = null;}
Invoke a()
один раз, второй раз он будет говорить
Uncaught TypeError: a is not a function
если функция является анонимной, а затем сделать его IIFE
(function(){ alert(1);})();
** Никогда не сдавайтесь **! :) – void
Ницца ... узнал что-то новое. – void
@void спасибо, наконец :) – gurvinder372
var _flag = true; // Have a flag variable.
function oneTimer(){
// Check flag is set to true or not
if(!_flag) return;
_flag = false;
// Your function definition here.
}
downvoters? помочь объяснить? – void
Вы используете переменную, объявленную во внешней области функции. Принятый «один раз» функциональный декоратор - это гораздо лучшее решение, поскольку все в нем заключено, поэтому проблем с «чистой» функцией не может быть. Кроме того, это не будет использоваться повторно, 'once' можно использовать для любой функции, но если вы хотите сделать то же самое с другой функцией, вам нужно будет сделать что-то вроде' _flag_2', которое может быстро запутаться. – synthet1c
Как отмечалось, если вы хотите выполнить функцию только один раз, попробуйте IIFE
. Эти функции вызывают немедленно и не могут быть вызваны впоследствии.
Ниже приведен пример кода.
(function test() {
console.log("test");
(function innerFunc() {
console.log("Inner Function");
})();
try {
innerFunc();
} catch (ex) {
console.log(ex)
}
})();
try {
test();
} catch (ex) {
console.log(ex)
}
Если вы хотите функциональность быть только в том случае, когда вы можете использовать следующую функцию
function once(fn, context) {
var result;
return function() {
if(fn) {
result = fn.apply(context || this, arguments);
fn = null;
}
return result;
};
}
// Usage
var canOnlyFireOnce = once(function() {
console.log('Fired!');
});
canOnlyFireOnce(); // "Fired!"
canOnlyFireOnce(); // nada
Предоставлено: https://davidwalsh.name/essential-javascript-functions
Довольно легко, просто назначить пустой функция к функции:
function once() {
alert('once');
once = function() { };
}
once();
once();
Можете ли вы объяснить случай использования? также что вы подразумеваете под отключением? –
Вы имеете в виду функцию javascript или хотите отключить 'javascript' –
Если вы хотите запускать функцию только один раз, вы должны изучить' IIFE'. Эти функции выполняются немедленно и не могут быть вызваны. – Rajesh