Le problème vient du fait qu'après avoir attribué une valeur à name, la valeur reste inchangée quelle que soit la façon dont j'actualise la page, ce qui me rend un peu méfiant quant au cycle de vie de la variable js ! Je l'ai aussi rencontré par hasard. Dans le code de test précédent, le nom n'était pas défini et aucune valeur n'était attribuée au début, mais le type de nom était une chaîne. Plus tard, j'ai imprimé l'objet window et j'ai découvert que l'objet avait le nom de l'attribut et qu'il s'agissait d'une chaîne vide, donc facile à comprendre. Mais pourquoi après affectation, cette valeur n'est pas initialisée à une chaîne vide mais existe toujours ?
web
Lorsque vous attribuez un nom, name='hello word' ; c'est en fait window.name='hellow world' ; puis lorsque vous regardez la définition de window.name, c'est Obtient/définit le nom de la fenêtre. À ce stade, vous définissez un nom pour cette fenêtre, donc peu importe la façon dont vous l'actualisez, la fenêtre n'est pas fermée et le nom est toujours là ; ce n'est pas un problème de cycle de vie des variables js
;
Le problème est que si vous actualisez la page, ce sera un nouveau contexte d'exécution, donc tout revient à l'état initial. La valeur que vous lui attribuez est déjà le contexte d'exécution précédent. Comment peut-il être actualisé dans le contexte. nouveau ? Est-ce que ça marche hors contexte ?
Wow, c'est la première fois que je vois une telle situation. Si je la mets en charge, cette situation n'arrivera pas, j'attendrai les conseils des experts.
Je viens de l'essayer, et il attribuera effectivement la valeur à l'objet fenêtre en tant qu'attribut, et elle ne sera pas effacée lors du rafraîchissement avec F5
Ce qui suit est une introduction à l'objet window. Il contient une phrase : Tous les objets, fonctions et variables globaux JavaScript deviennent automatiquement membres de l'objet window.
Objet Fenêtre
Tous les navigateurs prennent en charge l'objet fenêtre. Il représente la fenêtre du navigateur.
Tous les objets, fonctions et variables globaux JavaScript deviennent automatiquement membres de l'objet fenêtre.
Les variables globales sont des propriétés de l'objet window.
Les fonctions globales sont des méthodes de l'objet window.
Par exemple, si l'on définit une variable globale name1, elle peut également se retrouver dans l'objet window.
objet window, qui représente la fenêtre du navigateur. Par conséquent, tant que la fenêtre n'est pas fermée, même si F5 est actualisé, la valeur à l'intérieur (les attributs de l'objet winow lui-même en cas de besoin) existera toujours.
Il m'est soudain venu à l'esprit que window.name pouvait également être utilisé pour réaliser une transmission de données entre domaines.
Je suppose que cela peut être lié au type de conversion automatique de js et au piège
typeof
, car le code est modifié en :typeof
坑有关系,因为把代码换成:log输出的照样是
string
,所以能排除掉是神赋值的问题。刚才顺手查了下 MDN,发现
window
本身有个name
属性(传送门)……MDN上给的信息不多,于是又去参考了下阮老师《JavaScript 标准参考教程》上的相关说明:在name变量还没定义的时候,直接访问的是顶层的
La sortie du journal est toujours unewindow.name
rrreeechaîne
, le problème de l'affectation divine peut donc être exclu.Je viens de vérifier MDN et j'ai découvert que
window
lui-même a un attributname
(portail)... Il n'y a pas beaucoup d'informations sur MDN, alors je suis allé me référer à Ruan encore une fois. Instructions pertinentes du "Tutoriel de référence JavaScript Standard" de l'enseignant : Lorsque la variable name n'a pas été définie, lewindow.name
de niveau supérieur est directement accessible. Il s'agit d'une chaîne... c'est peut-être ce que cela signifie ?