前端-JavaScript1-4——JavaScript之变量
变量(Variables),和高中代数学习的x、y、z很像,它们不是字母,而是蕴含值的符号。
它和直接量不同,直接量5,就是数字5;直接量”你好”就是字符串“你好”。现在这个变量不一样了,你看见一个a,实际上它不是字母a,而是里面蕴含的不同的值。
4.1 整体感知
|
1 <script type="text/javascript"> 2 //定义一个变量 3 var a; 4 //赋值 5 a = 100; 6 //输出变量a 7 console.log(a); 8 </script> |
输出值为 100
我们使用var关键字来定义变量,所谓的关键字就是一些有特殊功能的小词语,关键字后面要有空格。
var就是英语variables变量的缩写,表示定义一个变量。一旦你
|
1 var a; |
你的电脑内存中,就会开辟一个空间,来存储这个变量a。
现在就可以给这个变量赋值,JS中给变量赋值用等号,等号右边的值赋给左边。
|
1 a = 100; |
现在a变量的值就是100。所以我们输出
|
1 console.log(a); |
控制台就会输出a变量的值,就是100
4.2 变量必须先声明,才能使用
使用一个变量,必须先进行一个var,才能使用。var这个过程可以叫做声明declaration,也可以叫做定义definition。
现在我们直接运行语句:
|
1 console.log(b); //这个b没有被var过,所以要报错 |
因为b没有被定义,所以b现在不是一个变量,系统不认识这个b的。抛出引用错误。
变量的名称是标识符(identifiers),任何标识符的命名都需要遵守一定的规则:
在JavaScript语言中,一个标识符(identifier)可以由字母、下划线(_)、美元($)符号、数字(0-9)组成,但不能以数字开头。也就是说,一个标识符必须由字母、下划线、美元符号开头,后续可以有字母、下划线、美元符号、数字。因为JavaScript语言是区分大小写的,所以A和a不是同一个变量。并且不能是JavaScript保留字、关键字。
保留字,是系统里面的有用途的字,为了不造成误会,不能成为标识符的名字。
保留字,不用背:
abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、fimal、float
goto、implements、import、int、interface、long、mative、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile
合法变量名的举例:
|
1 2 3 4 5 6 7 8 9 |
非法的:
|
1 2 3 4 5 6 |
变量的名字的长度实际上每个浏览器的规范不同,不用在意。
4.3 变量的赋值
变量的赋值用等号,等号就是赋值符号,在JS中等号没有其他的含义,等号就表示赋值。
|
1 2 3 |
运行结果:
可以定义和赋初值一起写:
|
1 2 |
运行结果:
等号右边的值给左边,等号右边的值不变。
|
1 2 3 4 5 |
运行结果:
你会发现,变量只需要var一次,后面改变变量的值的时候,就不需要var了,可以直接改变它的值。
|
1 2 3 |
如果一个变量,仅仅被var了,但是没有被赋初值呢,此时这个变量的值就是undefined;
|
1 2 |
运行结果:
实际上我们已经var了这个m,已经定义了这个m,只不过这就是浏览器的一个规矩,如果这个变量没有被赋初值,那么这个变量就视为没有“定义完成”。值就是undefined。
4.4 变量声明的提升
这是js特有的一个特点,其他语言都没有这个特点。有些程序员挺反感这个特点的。
我们现在先去改变变量的值,然后定义变量,由于JS有一个机制,叫做变量声明的提升,所以现在程序在执行前会已经看见这个程序中有一行定义变量,所以就会提升到程序开头去运行。
|
1 2 3 4 5 |
记住,js只能提升变量的声明,而不能提升变量的赋初值
|
1 console.log(a); 2 var a = 100; |
等价于:
|
1 var a; //自动升级 2 console.log(a); 3 a = 100; //赋初值还留在原地 |
4.5 不写var的情况
|
1 abc = 123; 2 console.log(abc); |
定义abc的时候没有写var,程序没有报错,说明这个abc变量真的已经被定义成功了。现在你看不出来var和不var的区别,感觉都是成功的,但是日后你就会知道不写var定义了一个全局变量,作用域是不能控制的。
4.6 用逗号来隔开多个变量的定义
|
1 var a = 7 , b = 9 , c = 10; |
逗号这个表示法,只能用于变量的连续定义,不要瞎用。
4.7 区分变量还是直接量
变量的时候,不能加引号。如果变量加上引号,就变成字符串了。
|
1 2 |
而不是输出100,
引号是“字符串”的定界符,所以在双引号里面的a已经失去了变量的意思,就是一个字符串a。
ok,附上代码
变量就是这个样子
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script type="text/javascript">
// //定义一个变量
// var a;
// //赋值
// a = 100;
// //输出变量a
// console.log(a); // 这个语句将会引发错误,因为b没有进行定义
// console.log(b); // // 以下都是合法的变量名
// var a;
// var A;
// var b333;
// var _abc;
// var $;
// var $o0_0o$;
// var ________;
// var _; // 以下都是非法的变量名
// var 123a;
// var 12_a;
// var abc@163;
// var abc¥;
// var var;
// var class; // var a; //定义
// a = 100; //赋值
// console.log(a); // var a = 100;
// var b = 200;
// a = b; //在改变a变量的值,a的值变为200。b的值不变。
// console.log(a);
// console.log(b); // 定义不赋初值,值是undefined
// var m;
// console.log(m); // 不写var的时候实际上现在看不出来区别,今后就知道是一个全局变量
// abc = 123;
// console.log(abc); var a = 1 , b = 2 , c = 3;
console.log(a);
console.log(b);
console.log(c);
</script>
</head>
<body> </body>
</html>
变量声明的提升
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script type="text/javascript">
a = 100;
var a; //这行定义会被自动提升
console.log(a); console.log(b); //提升只能提升定义,而不能提升赋初值。输出undefined
var b = 100; //提升定义,不能提升赋初值
</script>
</head>
<body> </body>
</html>
变量值的传递
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script type="text/javascript">
var a = 1;
var b = 2;
var c = 3;
a = b; //这里改变a的值,a的值变为2,b的值不变仍是2
b = c; //这里改变b的值,b的值变为3,c的值不变仍是3
c = a; //这里改变c的值,c的值变为2,a的值不变仍是2
console.log(a); //2
console.log(b); //3
console.log(c); //2
</script>
</head>
<body> </body>
</html>
ojbk,下一篇走起。
前端-JavaScript1-4——JavaScript之变量的更多相关文章
- Python开发【前端】:JavaScript
JavaScript入门 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...
- JavaScript 中变量、作用域和内存问题的学习
这是我学习JavaScript的第二篇文章,之前做过几年的Java开发,发现JavaScript虽然也是面向对象的语言但是确实有很多不同之处.就本篇博客,主要学习总结一下最近学习到的JavaScrip ...
- javascript之变量、作用域、作用域链
一.变量 javascript的变量是松散类型的,所谓松散类型就是说定义的变量可以用来保存任何类型的数据.定义变量时要使用var操作符后面跟变量名.这里的var是一个关键字,如果定义变量时省略了var ...
- 前端开发之JavaScript篇
一.JavaScript介绍 前端三剑客之JavaScript,简称js,可能是这三个里面最难的一个了.很早以前,市面上流通着三种js版本,为了统一,ECMA(欧洲计算机制造协会)定义了规范的版本, ...
- 前端基础之JavaScript day51
前端基础之JavaScript JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中) ...
- 前端三剑客之javascript
前端三剑客之javascript 给个小目录 一.JavaScript介绍 二.ECMAScript(核心) 三.BOM对象(浏览器对象) 四.DOM对象(文档对象模型) 总结: JS的组成: a ...
- 进击的Python【第十四章】:Web前端基础之Javascript
进击的Python[第十四章]:Web前端基础之Javascript 一.javascript是什么 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编 ...
- 前端html+css+JavaScript 需要掌握的单词
前端html+css+JavaScript 需要掌握的单词 broswer 浏览器(客户端) html 超文本标记语言 css 层叠样式表 javascript 语言名字(类似python/php ...
- 前端第三篇---前端基础之JavaScript
前端第三篇---前端基础之JavaScript 一.JavaScript概述 二.JavaScript的基础 三.词法分析 四.JavaScript的内置对象和方法 五.BOM对象 六.DOM对象 七 ...
- 前端面试之JavaScript中的闭包!
前端面试之JavaScript中的闭包! 闭包 闭包( closure )指有权访问另一个函数作用域中变量的函数. ----- JavaScript 高级程序设计 闭包其实可以理解为是一个函数 简单理 ...
随机推荐
- 操作系统介绍-操作系统历史,IO,进程的三态,同步异步阻塞非阻塞
1.操作系统历史 2.进程,IO,同步异步阻塞非阻塞 操作系统历史: 手工操作: 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 手工操 ...
- Saiku本地编译运行后Debug调试(十二)
Saiku源码拉下来在本地编译通过,然后想进行单元测试 发现不知道怎么写测试类了... 幸好有同事大佬的帮助,教了一招哈哈哈哈... 1.将本地编译通过的Saiku打包好(mvn clean inst ...
- 扯淡设计模式2:java,模板模式,
模板模式: package com.dayuanit.service; public abstract class UserService { public void login(String use ...
- Linux磁盘空间满了的排查与解决思路
block正常满 (磁盘实际不足)inode 满 大量的小文件block 满 文件没有被彻底删除(硬链接数0 进程调用数不为0) 解放方法: 1 查看df -h 磁盘使用量根据占用量大小逐步逐步排查 ...
- 理解linux下的load
我们在做Linux负载计算的时候,我们需要了解负载的几个概念 1)Linux负载是什么 2)Linux负载怎么计算 3)如何区分目前负载是“好”还是“坏” 4)什么时候应该注意哪些不正常的值 1) ...
- 不得不补:PHP的JSON, SQL
不管怎么说,还是得感谢慕课网,提供了很多免费的视频教学. 学习自: https://www.imooc.com/view/68 前端页面: <!DOCTYPE html> <html ...
- 22.一个球从100m高度自由下落,每次落地后返跳回原高度的一半,再反弹。求它在第10次落地时,共经过多少米,第10次反弹多高。
#include <stdio.h> #include <stdlib.h> int main() { ,hn=sn/; int i; ;i<=;i++) //注意i是从 ...
- mac搭配Nginx服务器常见问题
推流服务器主要是使用了开源的nginx和rtmp模块,网上也有很多资料,不过对有些可能出现的问题没有很好的总结. 安装brew 使用Mac进行开发很久的老司机应该对这个工具很熟悉了.brew是一个第三 ...
- License控制解决方案
当我们写完一个软件以后一般都会牵扯到软件控制,那么控制版本的原理是什么呢?其实就是在程序中添加了一段经过自己编写算法(这个算法可以是简单的公式运算,也可以是复杂的结合硬件的绑定方式),将形成的序列号注 ...
- CH3401 石头游戏(矩阵快速幂加速递推)
题目链接:传送门 题目: 石头游戏 0x30「数学知识」例题 描述 石头游戏在一个 n 行 m 列 (≤n,m≤) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这10个数 ...