建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

氟西汀

发帖: 393粉丝: 28

发消息 + 关注

发表于2020年08月01日 13:30:11 657 1
直达本楼层的链接
楼主
显示全部楼层
[技术交流] 温故而知新之- 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'。

image.png


细心的话,你会发现,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基础中的基础,但稍不注意,就会导致整个程序出错。所以大家即使以后成了大牛,也要注意,多回顾基础,巩固根基,让路走的更远。

转载链接:https://bbs.huaweicloud.com/blogs/192045

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

运气男孩

发帖: 406粉丝: 49

发消息 + 关注

发表于2020年08月23日 22:30:46
直达本楼层的链接
沙发
显示全部楼层

感谢分享~

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200