目录
JavaScript 变量
JavaScript 变量
JavaScript 变量是存储数据值的容器。
在本例中,x、y 和 z 是变量:
var x = 7; var y = 8; var z = x + y;
从上例中,可获得:
- x 存储值 7
- y 存储值 8
- z 存储值 15
JavaScript 标识符
标识符适用于给变量命名的。
命名规则如下
1 字母,数字,下划线,美元符号组成
2 首字母不能是数字
3 区分大小写
4 不能含有关键字
JavaScript 的变量声明
我们常常使用 let ,var ,const 声明变量。接下来具体介绍
let
格式:let 变量名 ;
实例
打开浏览器控制台有两种方式:
1 按F12 键打开
注意:如果按 f12 不管用,可能是键盘还没有解锁(我是这样认为的)你 输入 Fn+F12 就可以了
2 选择HTML文件,右键选择打开方式:浏览器(自己喜欢的浏览器打开),之后在当前网页,右键点击 检查,打开控制台 :console
注意
1 当你输入 let b 之后,你按回车 会出现:undefined 。
在 “JavaScript数据类型” 这篇博客有详细介绍
原因
undefined:要求整条语句,要有返回值。
但我们使用let 主要还是为了声明变量,没有返回值。所以系统会自动给出 undefined
2 发现整条语句时,没有使用分号表示结束
原因
原本按照我们学习Java的习惯来说,是必须要求我们在每一个语句结束添加分号的。
但在JavaScript中 分号可以不用手动添加,JavaScript解析引擎会自动在每一个语句最后插入分号。表示该语句已经结束了。
var
格式:var 变量名;
实例
为什么会出现 undefined ?理由同上!! !
const
应用场景:通常声明整个过程中,一直保持不变的变量(常量,字符串等)
格式:const 变量名=值;
声明时,必须要赋值
实例
注意:常使用const表示常量。我们知道常量是不能被修改的(不能被二次赋值)
但在这里我们不更改常量原始值,但可以更改常量对象的属性 或数组的数组元素的值。
实例
我们根据Let 和 var 处在的位置,划分范围(在函数中,代码块({ ...... }),全局范围内。
全局作用域
全局作用域:这个变量在任何地方,都可以被使用。在java中称之为全局变量。
var carName = "porsche";
// 此处的代码可以使用 carName
function myFunction() {
// 此处的代码也可以使用 carName
}
函数作用域
函数作用域:局部(函数内)声明的变量拥有函数作用域。在java中,表示为局部变量,只在方法中起作用。
// 此处的代码不可以使用 carName
function myFunction() {
var carName = "porsche";
// code here CAN use carName
}// 此处的代码不可以使用 carName
了解全局作用域和函数作用域后,我们再学习 let 声明的块作用域
块作用域(Let)
通过 var
关键词声明的变量没有块作用域。
在块 {} 内声明的变量可以从块之外进行访问。
{
var x = 10;
}
// 此处可以使用 x
可以使用 let
关键词声明拥有块作用域的变量。
在块 {} 内声明的变量无法从块外访问:
{
let x = 10;
}
// 此处不可以使用 x
共同点:
- 块作用域和函数作用域 在java中都表示为局部变量。在外部无法访问。
- 除了块作用域,其他的(函数作用域,全局作用域)都可以使用var 和let 表示
重新声明变量
实例
通过案例可以发现:
var 声明的变量,不存在是块作用域
因此我们声明两次变量x,且都表示为全局作用域。这就发生了问题。在输出x存储的值,不知道是具体表示哪一个?
应该使用
let
关键字重新声明变量可以解决这个问题。在块中重新声明变量不会重新声明块外的变量:
总结:很大程度上,我们不会一直使用var,一般使用let,在语法规则上和java规则差不多的。
原因是:使用var导致声明变量的范围,不清晰。
当你使用innerHTML时,Let声明的块作用域中变量是无法在外部表示的,因此结果为var 表示的全局作用域 10