Explication des connaissances de base de javascript
Cet article convient aux novices en JavaScript ou aux étudiants qui ont étudié le front-end depuis un certain temps et n'ont pas de notion claire de JS~~.
Objectif de l'apprentissage
Cet article s'adresse aux étudiants ayant de faibles bases JavaScript afin d'approfondir leur compréhension de JavaScript.
Cet article décrira les pièges suivants pour les débutants lorsqu'ils commencent à parler JavaScript (dont certains sont courants dans la plupart des langues)
Le contenu de l'explication est le suivant :
1. En attente
2. i
3. Objet d'emballage
4. >Partie explicative
1. Etc.
Essayez-le
Etc est une expression courante, mais toutes les situations ne conviennent pas à Etc. Etc. littéraux et non littéraux. S'applique aux types de référence.
Les codes ci-dessus sont des affectations consécutives courantes. Parfois, nous avons besoin d'attribuer deux variables à une valeur en même temps. Cependant, s'il s'agit de types de référence, ils ne peuvent pas l'être. attribués consécutivement. De plus, il y a une grosse faille dans l'affectation continue, à savoir que la variable sera divulguée dans le monde global. Nous ne l'avons pas divulguée dans le code ci-dessus, mais regardez le code suivant :// 字面量连等得到想要的结果 var a,b; a = b = 2; a // 2 b // 2 // 引用类型连等不可预测 var arr1, arr2; arr1 = arr2 = [] arr1[0] = 10 arr2[0] // 10 //引用类型连等使得两个引用指向一个对象,操作其中一个,两个值都变
Comme vous pouvez le voir, après avoir exécuté la fonction fn, la variable b apparaît dans la portée globale. Pourquoi ? Regardez la phrase var a = b = num.
Nous n'avons en fait déclaré que la variable a, et le b consécutif n'a pas été déclaré. À partir de là, nous pouvons savoir que b est accroché à l'objet fenêtre global, provoquant une fuite de la variable dans le monde.function fn (num) { var a = b = num; a // num b // num } fn(10) a // 报错 b // 10 // 我们并不没有定义全局变量b
Débutant
var a a = b = num //只声明了a
Cet exemple a été vu dans une question test. premier coup d'œil À première vue, cela semble flou, mais ce n'est pas du tout difficile à comprendre.
1. a et b font référence à des types, pointant tous deux vers un objet {x : 1}
var a = {x: 1} var b = a a.x = a = {y: 1} a.x // undefined b.x // {y: 1}
2. Opérateurs
Les opérateurs les plus couramment utilisés n'ont en fait rien de spécial. C'est une chose étrange. , mais le comprenez-vous vraiment si vous êtes novice ?
var a = {x: 1} // 引擎:我将要对a变量LHS(赋值),内容是{x: 1} // 作用域: 刚声明了a变量,给你。 var b = a // 引擎: 我将要对a变量RHS(查找) // 作用域: 你刚刚给它LHS了,给你吧 // 引擎: 我将要对b变量LHS(赋值),内容为a变量指向的对象 // 作用域:刚声明了b变量,给你。 a.x = a = {y: 1} // 引擎:我将要对a进行LHS(赋值),内容是另一个对象{y:1} // 作用域:可以,给你,但好像还有其他命令,先不要赋值。 // 引擎: 是的,下一步我还需要对a.x 进行LHS(赋值),内容是将要改变的a变量 // 作用域: 可以,a变量指向的对象有x属性,不过马上a就改变了,不过没关系,b变量也指向那个对象,赋值完后,你可以用b变量引用旧对象。 // 引擎:了解了,我先把a变量赋值为一个新的对象,然后把原来的a变量指向的对象的x属性赋值为 新a。 a.x // undefined // 引擎: 我需要拿到a变量指向的对象的x属性 // 作用域: 你刚刚改变了a的指向,现在的a指向的对象已经没有x属性了 b.x // {y: 1} // 引擎: 我需要拿到b变量指向的对象的x属性 // 作用域: 你是想拿到你旧对象的x属性吧,给你,不过已经被你在之前改变了值,现在b.x的值就是a指向的新对象的值。
Avant et Après , l'un consiste à renvoyer la valeur après que l'expression soit incrémentée et l'autre consiste à renvoyer la valeur avant que l'expression ne soit incrémentée. Nous pouvons décomposer les deux et examiner le processus.
C’est juste une question d’ordre des opérations. Cela peut être facile à comprendre, mais il y a aussi un piège, comme suit.var a = 1; var b = a++ a // 2 b // 1 var c = 1; var d = ++ c; c // 2 d // 2
Il y a quelques jours, une personne a demandé : Combien fait 1 ? Réponse : 2
b = a++ // 等价于 ... b = a a = a + 1 //......................... b = ++ a // 等价于 ... a = a + 1 b = a
3. en utilisant une chaîne pour obtenir la longueur, lorsque vous utilisez l'interception de méthode et d'autres comportements, avez-vous déjà pensé : une valeur littérale n'est qu'une valeur. Pourquoi a-t-elle des attributs de méthode ? Il est vrai que les objets n'existent que, mais lorsque l'expression est exécutée, un objet de packaging est généré. Peut-être avez-vous lu ce point de connaissances et pouvez-vous l'ignorer.
Nous définissons une chaîne str et obtenons la longueur de 5, mais nous ajoutons nous-mêmes un attribut aaa et ne pouvons pas l'obtenir. Cela doit être résolu par le cycle de déclaration de l'objet d'emballage : le cycle de déclaration. de l'objet d'empaquetage n'existe que dans une expression1 ++ // 等价于 1 = 1 + 1 // 引擎对 1 进行LHS(赋值),作用域发现他是非法变量,所以会报错 左值无效。
var str = 'hello' str.length // 5 str.aaa = 5 str.aaa // undefined
La plupart des langages ont des types de référence, qui sont en fait des variables d'objet. En langage C, nous comprenons le type référence comme un pointeur. Ce pointeur pointe dynamiquement vers un morceau de mémoire grâce aux modifications du code, le pointage du pointeur changera en conséquence. Il en va de même pour js.
var str = 'hello' str.length // 等价于 new String(str).length str.aaa = 5 //等价于 new String(str).aaa = 5 str.aaa // 等价于 new String(str).aaa
Ceci est un exemple dans "Javascript Advanced Programming". Nous passons un objet global à la fonction setColor et effectuons les opérations ci-dessus en interne. Nous imprimons que global.color est bleu, pourquoi pas ? ? Voici le résultat du type référence.
1. La variable globale est un type référence, qui pointe vers un objet,
2. Lorsqu'elle est transmise à la fonction setColor, obj fait référence à l'objet pointé par global (ci-après dénommé). as globalObj)
var global = new Object() function setColor (obj) { obj.color = 'blue' obj = new Object() obj.color = 'red' } setColor(global) global.color // blue
可以看出,我们并没有对global对象的color进行'red'赋值,'red'赋值给了另一个对象的color属性。
结论:引用类型传递是将两个变量指向同一个对象,而字面量的传递仅仅是值的赋值传递。我们可以将引用类型传递到函数进行改变,不可以在函数内改变传递进来的字面值。
5. && 与 ||
两者的基本运用相信大家都了解,大部分用来if判断,如:
var a = 2; var b = false if (a && b) { alert('best') } if (a || b) { alret('good') // 运行 }
他们的用法不局限于判断 左右两边的 && 和 || 关系,还可以用来提供代码的质量
var obj = {} if (obj.info.user === 'xu') { // terrible // .. } if (obj.info && obj.info.user === 'xu' ) { // good // ... }
如果仅仅判断obj.info.user 会报错造成程序终止,但是下面那样判断就大使得代码健壮,不会那么容易崩溃。
重点: && 和 || 并不会返回true和false,他会返回终止此表达式的那个变量值。
true && 6 // 6 NaN && false // NaN '0' || 6 // '0' false || true // true false || 0 && 1 // 0 false || 1 && 0 // 0
&&和||, &&优先级大于||。
&&操作符,如果左边为假,返回左边值,否则,始终返回右边值
||操作符,如果左边为真,返回左边值, 否则,始终返回右边值。
结尾
javascript基础本章简单的介绍在这里,内容并不全面,还请多多见谅。如有错误,请指出。。。。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持PHP中文网!
更多javascript基础知识讲解相关文章请关注PHP中文网!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Ce tutoriel expliquera comment créer des graphiques à tarte, anneaux et bulles à l'aide de chart.js. Auparavant, nous avons appris quatre types de graphiques de graphique. Créer des graphiques à tarte et à anneaux Les graphiques à tarte et les graphiques d'anneaux sont idéaux pour montrer les proportions d'un tout divisé en différentes parties. Par exemple, un graphique à secteurs peut être utilisé pour montrer le pourcentage de lions mâles, de lions féminins et de jeunes lions dans un safari, ou le pourcentage de votes que différents candidats reçoivent lors des élections. Les graphiques à tarte ne conviennent que pour comparer des paramètres ou des ensembles de données uniques. Il convient de noter que le graphique à tarte ne peut pas dessiner des entités avec une valeur nulle car l'angle du ventilateur dans le graphique à tarte dépend de la taille numérique du point de données. Cela signifie toute entité avec une proportion nulle

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript
