当前位置: 首页 > news >正文

JavaScript语法、关键字和变量

一、语法

1、区分大小写:变量、函数名、操作符

2、标识符:变量、函数、属性或函数参数的名称。

  组成:1)以字母、下划线、美元符号开头
2)其他字符可以是字母、下划线、美元符号或数字

  标识符的书写——小驼峰书写法(即第一个单词的首字母小写,后面每个单词的首字母大写)
注意:关键字、保留字、true、false和null不能作为标识符。

3、注释
1)单行注释

// 单行注释

2)块注释

/*
这是多行注释
*/

4、严格模式

"use strict";

5、语句
ECMAScript中的语句以分号结尾。

多条语句可以合并到一个C语言风格的代码块中。代码块由一个左花括号({)标识开始,一个右花括号(})标识结束。

二、关键字与保留字

1)关键字和保留字不能用作标识符或属性名。

三、变量

ECMAScript变量是松散类型的,意思是变量可以用于保存任何类型的数据。

每个变量只不过是一个用于保存任意值的命名占位符。

有3个关键字可以声明变量:var、const和let。

其中,var在ECMAScript的所有版本中都可以使用,而const和let只能在ECMAScript 6及更晚的版本中使用。

1)var

var message;  // 定义了一个名为message的变量,未初始化,值是undefined

使用var声明的变量会自动提升到函数作用域顶部。

2)let

let声明的范围是块作用域,而var声明的范围是函数作用域。

块作用域是函数作用域的子集,因此适用于var的作用域限制同样也适用于let。

let不允许同一个块作用域中出现冗余声明。

暂时性死区:let与var的另一个重要的区别,就是let声明的变量不会在作用域中被提升。

在解析代码时,JavaScript引擎也会注意出现在块后面的let声明,只不过在此之前不能以任何方式来引用未声明的变量。在let声明之前的执行瞬间被称为“暂时性死区”(temporal dead zone),在此阶段引用任何后面才声明的变量都会抛出ReferenceError。

全局声明:与var关键字不同,使用let在全局作用域中声明的变量不会成为window对象的属性(var声明的变量则会)。不过,let声明仍然是在全局作用域中发生的,相应变量会在页面的生命周期内存续。因此,为了避免SyntaxError,必须确保页面不会重复声明同一个变量。

条件声明:在使用var声明变量时,由于声明会被提升,JavaScript引擎会自动将多余的声明在作用域顶部合并为一个声明。因为let的作用域是块,所以不可能检查前面是否已经使用let声明过同名变量,同时也就不可能在没有声明的情况下声明它。

3)const

const的行为与let基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行时错误。

4)声名风格及最佳实践

① 不适用var
② const优先,let次之

http://www.dtcms.com/a/306287.html

相关文章:

  • 提高建筑舒适度与能源效率,楼宇自控系统意义重大
  • 极致业务弹性 密度性能双管齐下—联想问天 WR5220 G5 服务器测试
  • 将 qt 构建为静态库
  • 2025年电子设计大赛G题《电路模型探究装置》各小问数学推导及个人思路
  • 信贷风控笔记8-解读商业银行资本管理办法笔记
  • 检索排序(Re-ranking):搜索与推荐系统的精细化利器
  • MySQL 中的 Binlog 及其在删除数据库时的作用:点时间恢复(PITR)
  • Python .toml 安装文件介绍
  • 使用git提交时出现了报错,新手不会的可以参考一下。
  • 技术复盘报告:Vue表格中多行文本字段数据保存丢失问题
  • 深入浅出设计模式——创建型模式之单例模式 Singleton
  • Docker离线安装依赖包地址
  • USRP捕获手机/路由器数据传输信号波形
  • Windows环境下安装Python和PyCharm
  • 【ip】IP地址能否直接填写255?
  • 【maven】仓库配置
  • 02 基于sklearn的机械学习-特征降维(特征选择、PCA)、KNN算法、模型选择与调优(交叉验证、朴素贝叶斯算法、拉普拉斯平滑)
  • 2507C++,介绍名字对象
  • Apache Ignite 集群状态(Cluster States)
  • fortigate的waf功能
  • openwrt中br-lan,eth0,eth0.1,eth0.2
  • day08(if-esle)
  • Linux 软件包管理
  • 【机器学习】机器学习新手入门概述
  • 基于C++的智能交通和智能公交流量预测与调度优化
  • 【物联网】基于树莓派的物联网开发【18】——树莓派安装Mosquitto服务
  • 【WPS】邮件合并教程\Excel批量写入数据进Word模板
  • 【0基础PS】PS工具详解--画笔工具
  • C++ 双缓冲(Double Buffering)实现无锁读取与高效数据更新
  • InfluxDB 与 Java 框架集成:Spring Boot 实战(二)