Maison interface Web js tutoriel Javascript中的函数声明与函数表达式(奇技淫巧)_javascript技巧

Javascript中的函数声明与函数表达式(奇技淫巧)_javascript技巧

May 16, 2016 pm 06:09 PM
déclaration de fonction

举一个例子:


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

试一下就知道这段代码的意思就是声明一个函数,然后立刻执行,因为Javascript中的变量作用域是基于函数的,所以这样可以避免变量污染,但这里的位运算符“~”乍一看让人摸不到头脑,如果去掉它再运行则会报错:SyntaxError。

在阐述为什么之前,让我们先来明确Javascript中的两个概念:函数声明和函数表达式:

先来看看什么样的是函数声明:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

再来看看什么样的是函数表达式:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

现在回头看看文章开头的问题,为什么去掉位操作符“~”后运行会报错,这是因为从语法解析的角度看,Javascript不允许在函数声明的后面直接使用小括号,而函数表达式则没有这个限制,通过在函数声明前面加上一个“~”操作符,就可以让语法解析器把后面看成是函数表达式,同样的,在函数声明前面加上“!,+,-”等操作符也是可行的。

那我们为什么不使用下面这种函数表达式的方式呢?


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

虽然从语法解析的角度看没有问题,但是上面的代码存在弊端,它引入了一个变量,可能会污染现有的运行环境,带来潜在的问题。

使用位操作符“~”的方法多少显得有点奇技淫巧,其实把函数声明用小括号套起来更易读:


[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

弄明白了原理,不管遇到什么写法,都不会再丈二和尚摸不着头脑了。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Paramètres par défaut dans les déclarations de fonctions C++ : une analyse complète de leur déclaration et de leur utilisation Paramètres par défaut dans les déclarations de fonctions C++ : une analyse complète de leur déclaration et de leur utilisation May 02, 2024 pm 03:09 PM

Les paramètres par défaut en C++ offrent la possibilité de spécifier des valeurs par défaut pour les paramètres de fonction, améliorant ainsi la lisibilité, la simplicité et la flexibilité du code. Déclarez les paramètres par défaut : ajoutez le symbole "=" après le paramètre dans la déclaration de la fonction, suivi de la valeur par défaut. Utilisation : Lorsque la fonction est appelée, si des paramètres facultatifs ne sont pas fournis, les valeurs par défaut seront utilisées. Cas pratique : Une fonction qui calcule la somme de deux nombres. Un paramètre est obligatoire et l'autre est facultatif et a une valeur par défaut de 0. Avantages : lisibilité améliorée, flexibilité accrue, code passe-partout réduit. Remarque : Il ne peut être spécifié que dans la déclaration, il doit être à la fin et les types doivent être compatibles.

Quel impact a l'ordre de déclaration et de définition des fonctions C++ ? Quel impact a l'ordre de déclaration et de définition des fonctions C++ ? Apr 19, 2024 pm 01:42 PM

En C++, l'ordre des déclarations et des définitions de fonctions affecte le processus de compilation et de liaison. Le plus courant est que la déclaration vient en premier et la définition après ; vous pouvez également utiliser « forwarddeclaration » pour placer la définition avant la déclaration ; si les deux existent en même temps, le compilateur ignorera la déclaration et n'utilisera que la définition.

Quelle est la différence entre la déclaration et la définition d'une fonction C++ ? Quelle est la différence entre la déclaration et la définition d'une fonction C++ ? Apr 18, 2024 pm 04:03 PM

Une déclaration de fonction informe le compilateur de l'existence de la fonction et ne contient pas l'implémentation, qui est utilisée pour la vérification de type. La définition de fonction fournit l'implémentation réelle, y compris le corps de la fonction. Les principales caractéristiques distinctives comprennent : l’objectif, l’emplacement et le rôle. Comprendre les différences est crucial pour écrire du code C++ efficace et maintenable.

Déclarations et définitions de fonctions C++ Déclarations et définitions de fonctions C++ Apr 11, 2024 pm 01:27 PM

La déclaration et la définition de fonction sont nécessaires en C++. La déclaration de fonction spécifie le type de retour, le nom et les paramètres de la fonction, tandis que la définition de fonction contient le corps et l'implémentation de la fonction. Déclarez d’abord la fonction, puis utilisez-la dans votre programme en passant les paramètres requis. Utilisez l'instruction return pour renvoyer une valeur d'une fonction.

Erreur de compilation C++ : l'appel de fonction ne correspond pas à la déclaration de fonction, comment la résoudre ? Erreur de compilation C++ : l'appel de fonction ne correspond pas à la déclaration de fonction, comment la résoudre ? Aug 22, 2023 pm 12:39 PM

Erreur de compilation C++ : l'appel de fonction ne correspond pas à la déclaration de fonction, comment la résoudre ? Lors du développement de programmes C++, vous rencontrerez inévitablement des erreurs de compilation. L'une des erreurs courantes est que l'appel de fonction ne correspond pas à la déclaration de fonction. Ce type d'erreur est largement répandu parmi les programmeurs C++. En raison du fait qu'ils ne prêtent pas attention à l'exactitude de la déclaration des fonctions, cela entraîne des problèmes de compilation, ce qui fait finalement perdre du temps et de l'énergie à résoudre le problème et affecte l'efficacité du développement. Les moyens d’éviter cette erreur nécessitent de suivre certaines normes et pratiques standards, examinons-les ci-dessous. Qu'est-ce qu'un appel de fonction par rapport à une déclaration de fonction ?

[[nodiscard]] dans les déclarations de fonctions C++ : démystifier les conséquences de l'ignorance des valeurs de retour [[nodiscard]] dans les déclarations de fonctions C++ : démystifier les conséquences de l'ignorance des valeurs de retour May 01, 2024 pm 06:18 PM

L'attribut [[nodiscard]] indique que la valeur de retour de la fonction ne doit pas être ignorée, sinon cela provoquera un avertissement ou une erreur du compilateur pour éviter les conséquences suivantes : exceptions non initialisées, fuites de mémoire et résultats de calcul incorrects.

Syntaxe détaillée de la déclaration de fonction C++ : de l'analyse syntaxique à l'analyse de l'utilisation des spécifications Syntaxe détaillée de la déclaration de fonction C++ : de l'analyse syntaxique à l'analyse de l'utilisation des spécifications Apr 30, 2024 pm 02:54 PM

La syntaxe de déclaration de fonction C++ est la suivante : returnTypefunctionName(parameterType1parameterName1,...,parameterTypeNparameterNameN);, où returnType est le type de retour, functionName est le nom de la fonction, ParameterType est le type de paramètre et ParameterName est le nom du paramètre, qui doit se terminer par un point-virgule.

Un guide étape par étape pour la déclaration de fonctions C++ : des instructions détaillées couvrant chaque étape Un guide étape par étape pour la déclaration de fonctions C++ : des instructions détaillées couvrant chaque étape May 02, 2024 pm 04:33 PM

Une déclaration de fonction indique au compilateur qu'une fonction existe sans fournir de corps de fonction. Les étapes sont les suivantes : spécifier le type de retour de la fonction (void s'il n'y a pas de valeur de retour) définir le nom de la fonction et déclarer les paramètres de la fonction (facultatif, y compris le type de données et l'identifiant) plus un point-virgule

See all articles