温故而知新之- Javascript变量声明
变量声明
命名规范
变量名由字母、$、下划线(_) 开头,紧跟着字母、数字、下划线(_)。要注意:变量名不能由数字开头,很多初学者包括我在内,会记乱了。
举个合法命名的栗子
let name = '余人杰'; let $id = 'hw91364016';
重点:Javascript的关键字不可以用作变量名,如 if、while、class、true、false 等等。 栗子如下:
let if = '余人杰';
声明变量的方式
可以使用var、let、const等方式进行定义。
声明和赋值结合,如下:
var name = '余人杰'; let id = 'hw91364016'; const PI = 3.141596;
在不明确变量要赋什么值时,可以先声明变量,等执行一些逻辑后,知道具体值后再给其赋值。
let name; ..... name = '余人杰';
当功能复杂时,你可能需要多个变量进行存储值,你可以使用 , 同时声明多个变量。
let name = '余人杰', id = 'hw91364016', age = 18;
弱类型
Javascript变量的特点是弱类型的,它可以保存任何类型的数据,说白了就是变量没有类型可言,但它的值有类型。
变量可以更换不同类型的数据
let name = '余人杰'; console.log(typeof name); // string name = 666; console.log(typeof name); // number name = null; console.log(typeof name); // object
我们可以看出,Javascript的变量类型,是被所引用的值决定的。
声明变量的基础知识就这些没了?当然不是,还有个很重要的,话说面试常出的变量扩展知识点-变量提升。
变量提升
怎么理解?pink老师划过重点说过,解析器会先解析代码,然后会将声明变量的 声明 的提升到 最前 ,这就是变量提升。
使用 var, function (){} 定义的代码,声明会被提升到前面,赋值还在原位置。
那记住这个有什么用呢?很大作用,有时可以拯救你的程序,你一不注意,就会因为这个常出错。比如:
我们特意写个出错的程序来感受下:
var name = '余人杰'; console.log(name); let else = 'if';
我们在浏览器的控制台上测试下,发现报这个错 Uncaught SyntaxError: Unexpected token 'else'。
细心的话,你会发现,console.log(name); 是在写在 let else = 'if'; 前面,按我们小白思维理解,应该是先打印'余人杰',但结果并非如此。 而是还没有到执行环节就报错了。
如果你还不明白,我再写一个简单的代码给你理解,把解析器执行过程呈现出来给你细细品:
console.log(name); var name = '余人杰'; console.log(name); // 解析器执行过程是这样的 var name; console.log(name); name = '余人杰'; console.log(name);
TDZ
课后,我还查阅了一些资料,还有一个由变量扩展的知识,术名叫TDZ,叫做暂时性死区。
怎么理解?就是说变量虽然在作用域内存在了,但要使用时,必须在let 或者 const 声明后才可以。
我们在平时编程时,多注意TDZ,养成先声明后使用的习惯,可以让程序更健壮。
先声明变量,再使用
多使用let/const,少使用var
心得:变量声明虽然时Javascript基础中的基础,但稍不注意,就会导致整个程序出错。所以大家即使以后成了大牛,也要注意,多回顾基础,巩固根基,让路走的更远。
- 点赞
- 收藏
- 关注作者
评论(0)