IE10 Javascript de la Fonction “Attendu”
Ce code est de me donner un SCRIPT5002: Function expected
erreur:
var callIt = function(func) { func(); }
POURQUOI!? C'est comme essayer de faire de ce type de vérification ou quelque chose
EDIT: cas d'utilisation
var callIt = function(func) { func(); }
function nextSlide() {
var fn = currSlide ? currSlide.hide : callIt;
currSlide = setupSlides[++slideIdx];
fn(currSlide.show());
}
DOH!
et ce que vous êtes de passage dans
une fonction.
Montrer l'appel à
Assurez-vous que vous êtes en l'appelant comme:
callIt
comme paramètre?une fonction.
callIt
est de servir comme un tmp fonction pour remplacer un jquery fonction d'animation. Par exemple: (currentSlide ? currentSlide.hide : callIt)(nextSlide.fadeIn)
Montrer l'appel à
callIt
, c'est là qu'est l'erreur.Assurez-vous que vous êtes en l'appelant comme:
callIt(MyFunction)
et pas callIt("myFunction")
Aussi, pour plus de clarté, assurez-vous de terminer votre déclaration dans un point-virgule donc une fonction anonyme par la suite ne cherche pas à faire appel à la fonction.OriginalL'auteur Markus Orreilly | 2013-11-25
Vous devez vous connecter pour publier un commentaire.
Votre code:
...appels
currSlide.show()
et passe la valeur de retour de l'appel enfn
, exactement de la même façonfoo(bar())
appelsbar
et passe de sa valeur de retour dansfoo
.depuis le retour de la valeur de
show
n'est pas une fonction, vous obtenez le message d'erreur. Vous avez peut-être voulu dire:Noter, cependant, que vous avez un problème ici:
Si
currSlide
est truthy, vous obtiendrez une référence à lahide
fonction, mais la fonction est pas en aucune façon liés àcurrSlide
. Si vous l'appelez plus tard, il est susceptible d'échouer, car il s'attend àthis
pour signifier quelque chose de précis.Si vous pouvez compter sur d'avoir les caractéristiques de ECMAScript5 (donc, vous êtes à l'aide d'un navigateur moderne autre que IE8 et/ou vous êtes, y compris un "es5 shim", vous pouvez corriger cela avec
Function#bind
:Ou si vous utilisez jQuery, vous pouvez le fixer avec du jQuery
$.proxy
:À la fois de ceux de retour d'une nouvelle fonction qui, lorsqu'on les appelle, qui fera appel à la fonction cible avec le
this
valeur.Si vous ne l'utilisez pas ES5 ou jQuery, eh bien, ce serait de le faire:
...mais à ce point je soupçonne prendre du recul et de réévaluer pourrait être dans l'ordre.
OriginalL'auteur T.J. Crowder