JS红宝书学习-第3章 语言基础 --变量_var

2021-09-06 16:12

阅读:497

标签:一个   自动   语言   完全   推荐   其它   --   加油   情况下   3.3 变量-var ES变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存值得命名占位符。 当前有三个关键字可以声明变量:var,const,let。但是目前只有var可以再任一版本的ES中使用,而const和let只能在ES6及以后的版本使用。 1.var关键字 要定义变量,可以使用var操作符,后面跟变量名,如: var num; 这行代码定义了一个名为num的变量,可以用来存储任何类型的值。(这个就是上边说的松散类型)在变量不初始化(就是赋值)的情况下会保存一个特殊值undefined。 我们一般使用的时候都会在创建时候同时赋值,如: var num = 0; 在这里,num被定义为了一个数值为0的变量。 同时上面说的松散类型的另一种体现为,用户可更改已经赋值的变量类型,如: num = ‘0‘; 此时把变量num从数值型的0 变为 字符型的‘0‘,这样是完全可以的,但是不推荐,其它的开发者在使用时可能不明确类型,然后很困扰,尤其是强类型的语言开发者,由此也诞生出了TS。 不过这也是JS的魅力。有利有弊~ 2.声明作用域 有了变量那么变量的作用域。当你声明一个var变量时,var变量会成为包含它的函数的局部变量。当变量在函数退出后会自动销毁,如: function demo(){ var num = 0; // demo的局部变量 } demo(); // 在此行执行完毕后,num会被销毁 console.log(num);// 销毁了,找不到报错 如果不想报错,那么我们的可以省略var操作符,创建一个全局变量: function demo(){ num = 0; // 全局变量 } demo(); // 在此行执行完毕后,num不会被销毁 console.log(num);// 0 虽然省略var会定义为全局变量,但不建议这样做。在局部作用域中定义的全局变量很难维护,而且会给人造成困扰,同时在语法检查器下无法执行,以及严格模式下会抛出错误ReferenceError。 如果想同时定义多个变量,可以在一条语句中使用逗号分隔每个变量,如: var name = ‘张三‘, age = 18; 3.声明提升 我们目前知道的变量都是先声明在使用,但是使用var关键字声明时,会提升到作用域顶部,如: function test(){ // 提升到了这个地方 // var num; console.log(num); var num = 0; // 此处变量提升 } test() // undefined 这样本该报错的代码就,就因为这一特性没有报错。 所谓提升(hoist),也就是把所有变量声明都拉到函数作用于的顶部。此外,反复多次使用var声明同一个变量也没有问题: function test(){ var num = 0; // 我声明 var num = 1; // 我再声明 var num = 2; // 哎,就是玩,就不报错 console.log(num); } test(); // 2 加油。JS红宝书学习-第3章 语言基础 --变量_var标签:一个   自动   语言   完全   推荐   其它   --   加油   情况下   原文地址:https://www.cnblogs.com/clmmmmmm/p/14964384.html


评论


亲,登录后才可以留言!