recherche
Maisoninterface Webjs tutorielTerminations de ligne en JavaScript

Line endings in Javascript

Terminations de ligne en JavaScript

J'ai passé une grande partie de la journée à me battre avec des fins de ligne en JavaScript, et j'ai finalement révélé des résultats qui méritent d'être partagés - ne serait-ce que pour sauver d'autres développeurs de la descente dans le même trou noir de débogage.

Comme vous le savez peut-être, l'humble rupture de ligne a en fait trois formes selon le système d'exploitation qui fait la rupture. Sur Unix Machines, un seul personnage de Newline «N» fait le travail. Sur les Mac, un retour en chariot «R» est utilisé. DOS et Windows utilisent les deux: «RN». C'est l'un de ces problèmes relativement subtils qui peuvent vous mordre fort si vous ne savez pas quoi rechercher.

Aujourd'hui, j'ai été chargé du simple problème de construire une fonction JavaScript pour transformer les Newlines simples pour double Newlines dans une TextArea. Ma première tentative ressemblait à ceci:

var DoubleNewlinesre = / ([^ n]) n ([^ n]) / g; fonction DoubleNewlines (obj) { obj.value = obj.value.replace (DoubleNewlinesre, "1 $ NN 2"); } Double Newlines


Le code ci-dessus utilise une expression régulière simple qui trouve toutes les instances de quelque chose qui n'est pas une nouvelle ligne, suivie d'une nouvelle ligne, suivie de quelque chose d'autre qui n'est pas une nouvelle ligne. Les instances de ce modèle sont ensuite remplacées par le même motif par deux nouvelles lignes au milieu au lieu d'un.

Cela a bien fonctionné dans Firefox sur Windows, Linux et Mac car Firefox traite Newlines comme «N» quelle que soit la plate-forme sur laquelle il fonctionne. Il a brisé sur IE pour Windows et IE pour Macintosh parce que ces navigateurs utilisent respectivement «RN» et «R».

assez juste. La solution habituelle à ce problème consiste à normaliser les terminaisons de ligne avant d'exécuter la conversion, en remplaçant chacune des trois combinaisons par la fin unique de votre préférence (dans mon cas «N»). Voici ma deuxième tentative de fonction:

fonction DoubleNewlines (obj) { obj.value = obj.value.replace (/ (rn | r | n) / g, 'n'); obj.value = text.replace (DoubleNewlinesre, "1 $ NN 2"); }


Cela ne fonctionnait pas non plus. Après beaucoup de grattage, de débogage et de fouet avec des boîtes à alerte, j'ai finalement découvert une «fonctionnalité» sans papiers et presque obscure de l'esprit de façon engourdissante d'Internet Explorer: lorsque vous attribuez une chaîne à l'attribut de valeur d'un objet d'entrée, c'est-à-dire convertit silencieusement vos belles terminaisons de ligne ‘n’ ’à la préférence de la plate-forme. La documentation de Microsoft ne le note pas, mais j'ai confirmé que cela se produit sur les versions Windows et Mac d'Internet Explorer.

Bizzarely, si vous attribuez à l'attribut de valeur d'un objet de champ de formulaire caché, aucune conversion n'a lieu; Les fins de ligne ne sont modifiées que si vous affectez une zone de texte.

Le code suivant, bien que de fonction apparemment identique au code juste répertorié, fait exactement ce que je veux qu'il fasse:

fonction DoubleNewlines (obj) { var text = obj.value; text = text.replace (/ (rn | r | n) / g, 'n'); obj.value = text.replace (DoubleNewlinesre, "1 $ NN 2"); }


Cela fonctionne bien car la version normalisée est attribuée à une variable plutôt que d'être attribuée directement à l'attribut de valeur de l'objet TextArea - d'où la conversion de fin de ligne de ligne d'IE est retardée jusqu'à la fin du script et ne parvient pas à jouer à Havoc avec ma deuxième expression régulière.

Enfin, une note sur le style. Si je pensais à la réutilisation du code plutôt qu'à travailler rapidement pour résoudre un problème, j'aurais probablement trouvé quelque chose comme ceci:

fonction DoubleNewlines (texte) { text = text.replace (/ (rn | r | n) / g, 'n'); return text.replace (DoubleNewlinesre, "1 $ NN 2"); } Double Newlines


Bien que cela nécessite un peu plus de code dans le gestionnaire OnClick, abstraction uniquement de l'opération de chaîne que j'aurais complètement évité le problème de conversion de fin de ligne étrange. Pourtant, au moins je suis reparti avec la compréhension des autres petites bizarreries d'IE.

Questions fréquemment posées (FAQ) sur les fins de ligne en javascript

Quelle est la signification des terminaisons de ligne en javascript?

Les terminaisons de ligne en JavaScript sont cruciales car elles signifient la fin d'une instruction. En JavaScript, chaque instruction est séparée par un point-virgule (;). Cependant, les interprètes JavaScript sont assez intelligents pour insérer automatiquement les demi-terrains à la fin des lignes s'ils sont manquants. Cette fonctionnalité est connue sous le nom d'insertion automatique des demi-finales (ASI). Malgré cela, il est considéré comme une bonne pratique d'inclure manuellement les demi-colons pour éviter toute erreur potentielle ou résultats inattendus.

Comment puis-je ajouter une nouvelle ligne en JavaScript?

En JavaScript, vous pouvez ajouter une nouvelle ligne à l'aide de séquences d'évacuation. La séquence d’évasion pour une nouvelle ligne est «n». Par exemple, si vous souhaitez ajouter une nouvelle ligne entre deux phrases, vous pouvez le faire comme ceci: «Hellonworld». Lorsque cette chaîne est imprimée, «Hello» et «World» seront sur des lignes distinctes.

Quelle est la différence entre «N» et «RN» dans JavaScript?

Dans JavaScript, «N» et «RN» sont tous les deux utilisés pour créer de nouvelles lignes. Cependant, ils sont utilisés différemment selon le système d'exploitation. «N» est utilisé comme personnage Newline dans les systèmes basés sur UNIX (comme Linux et Mac), tandis que «RN» est utilisé dans Windows. Le caractère «R» représente un retour chariot, qui déplace le curseur au début de la ligne sans passer à la ligne suivante.

Comment puis-je ajouter plusieurs pauses de ligne en JavaScript?

Pour ajouter plusieurs pauses line en javascript, vous pouvez utiliser la séquence «n» à échapper plusieurs fois. Par exemple, «Hellonnworld» ajoutera deux pauses de ligne entre «bonjour» et «monde».

Puis-je utiliser des balises HTML pour les pauses de ligne en javascript?

Oui, vous pouvez utiliser des balises HTML pour les pauses de ligne en JavaScript lorsque vous travaillez avec du contenu HTML. La balise «
» peut être utilisée pour ajouter une rupture de ligne. Par exemple, «Hello
World» ajoutera une rupture de ligne entre «bonjour» et «monde» lorsqu'il est affiché dans un document HTML.

Quel est le rôle des terminaisons de ligne dans les commentaires JavaScript?

En JavaScript, les terminaisons de ligne jouent un rôle important dans les commentaires. Les commentaires en une seule ligne dans JavaScript commencent par «//» et se terminent à la pause. Tout après «//» sur la même ligne est considéré comme un commentaire et ignoré par l'interprète JavaScript.

Comment puis-je gérer les terminaisons de ligne dans les chaînes JavaScript?

Dans les chaînes JavaScript, les terminaisons de ligne peuvent être manipulées en utilisant la séquence «n». Cette séquence insère un nouveau caractère dans la chaîne, créant efficacement une rupture de ligne.

Comment l'insertion automatique de la ligne de semi-colonie (ASI) gère-t-elle les terminaisons de ligne?

L'insertion semi-colonale automatique (ASI) dans JavaScript est un mécanisme qui insère automatiquement les semi-colons (ASI) dans la plupart des terminateurs de ligne. Cela signifie que même si vous oubliez de mettre un point-virgule à la fin d'une instruction, JavaScript l'interprétera toujours correctement.

Puis-je utiliser des fins de ligne pour formater mon code JavaScript?

Oui, les fins de ligne peuvent être utilisées pour formater le code JavaScript. Une utilisation appropriée des terminaisons de ligne peut rendre votre code plus lisible et plus facile à entretenir. Il est courant de démarrer une nouvelle ligne pour chaque instruction ou après un bloc de code (comme une fonction ou une boucle).

Comment les fins de ligne affectent-elles l'exécution du code JavaScript?

Les terminaisons de ligne en JavaScript affectent principalement la liabilité et l'organisation du code. Cependant, ils peuvent également avoir un impact sur l'exécution du code en termes d'insertion automatique des demi-colonies (ASI). Si une fin de ligne est placée de manière incorrecte, cela pourrait conduire à des résultats inattendus en raison de l'insertion automatique des demi-colons. Par conséquent, il est important de comprendre et d'utiliser correctement les fins de ligne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
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
Node.js diffuse avec dactylographieNode.js diffuse avec dactylographieApr 30, 2025 am 08:22 AM

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Python vs JavaScript: considérations de performance et d'efficacitéPython vs JavaScript: considérations de performance et d'efficacitéApr 30, 2025 am 12:08 AM

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

Les origines de JavaScript: explorer son langage d'implémentationLes origines de JavaScript: explorer son langage d'implémentationApr 29, 2025 am 12:51 AM

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

Dans les coulisses: quel langage alimente JavaScript?Dans les coulisses: quel langage alimente JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

L'avenir de Python et Javascript: tendances et prédictionsL'avenir de Python et Javascript: tendances et prédictionsApr 27, 2025 am 12:21 AM

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.

Python vs JavaScript: environnements et outils de développementPython vs JavaScript: environnements et outils de développementApr 26, 2025 am 12:09 AM

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

JavaScript est-il écrit en C? Examiner les preuvesJavaScript est-il écrit en C? Examiner les preuvesApr 25, 2025 am 12:15 AM

Oui, le noyau du moteur de JavaScript est écrit en C. 1) Le langage C fournit des performances efficaces et un contrôle sous-jacent, qui convient au développement du moteur JavaScript. 2) Prendre le moteur V8 comme exemple, son noyau est écrit en C, combinant l'efficacité et les caractéristiques orientées objet de C. 3) Le principe de travail du moteur JavaScript comprend l'analyse, la compilation et l'exécution, et le langage C joue un rôle clé dans ces processus.

Rôle de JavaScript: rendre le Web interactif et dynamiqueRôle de JavaScript: rendre le Web interactif et dynamiqueApr 24, 2025 am 12:12 AM

JavaScript est au cœur des sites Web modernes car il améliore l'interactivité et la dynamicité des pages Web. 1) Il permet de modifier le contenu sans rafraîchir la page, 2) manipuler les pages Web via Domapi, 3) prendre en charge les effets interactifs complexes tels que l'animation et le glisser-déposer, 4) Optimiser les performances et les meilleures pratiques pour améliorer l'expérience utilisateur.

See all articles

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

SublimeText3 version Mac

SublimeText3 version Mac

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP