一、什么是数据?
- 万物皆数据,编程就是操作数据
- 在内存中可读的, 可传递的并且保存了特定的信息
- 在内存中的所有操作都是和数据打交道
二、值
1、值
计算机程序的运行需要对值进行操作,在javascript中值被分成了两大类:基本数据类型和引用数据类型.取得并使用值是所有程序设计中的要点。
2、字面量
形如 1 2 3 4 5等直接使用的值 我们称之为字面量
三、变量
关于变量,可参考go语言使用-基础语法(2)之变量。语言都是相通的,希望有助你理解。
1、什么是变量?
- 变量即可变之量,变量对应的数据状态会在特定的情景发生改变
- 在程序运行过程中它的值是允许改变的量
- 一个变量对应一块小内存, 它的值保存在此内存中
2、变量
当程序需要将值保存起来以备将来使用时,便将其赋值给一个变量。变量是一个值的符号名称。可以通过名称来获得对值的引用。
在几乎所有的编程语言中,我们都会使用变量来作为值的符号名。变量的名字又叫做标识符,其需要遵守一定的规则。ECMAScript的变量是松散型的(即可以用来保存任何类型的值)。通俗一点的说,每个变量仅仅是一个用于保存值的占位符而已。
注意!!在javascript中变量是没有类型的,只有值才持有类型。!!也就是说javascript不做类型强制;语言引擎不要求变量总是持有与其初始值同类型的值。一个变量可以现在被赋值为字符串类型值,随后又被赋值为数字类型值。这是javascript作为动态语言的一个优势
3、标识符
- 一个 JavaScript 标识符必须以字母、下划线(_)或者美元符号($)开头
- 不能以数字开头
- 不能使用关键字,保留字
- 标识符一般都采用驼峰命名法
首字母小写,每个单词的开头字母大写,其余字母小写
代码示例:
<script type="text/javascript">
/*
* 标识符
* - 在JS中所有的可以由我们自主命名的都可以称为是标识符
* - 例如:变量名、函数名、属性名都属于标识符
* - 命名一个标识符时需要遵守如下的规则:
* 1.标识符中可以含有字母、数字、_、$
* 2.标识符不能以数字开头
* 3.标识符不能是ES中的关键字或保留字
* 4.标识符一般都采用驼峰命名法
* - 首字母小写,每个单词的开头字母大写,其余字母小写
* helloWorld xxxYyyZzz
*
*/
/*var if = 123;
console.log(if);*/
//千万不要这么用
var 锄禾日当午 = 789;
console.log(锄禾日当午);
</script>
4、声明变量
- 使用关键词 var。例如
var x = 42
用 var 关键字声明的变量,如果没有赋初始值,则其值为 undefined - 字面量形式(语法糖)
直接使用x=42
;
省略var声明的变量是全局变量。不推荐使用这种方式声明变量 - ECMAScript的变量是松散型的,即可以用来保存任何类型的值
- 我们也可以一次声明多个变量
var a=1,b=2,c,d=4;
代码示例:
<script type="text/javascript">
//字面量
console.log(1);
//变量
var a =1;
a = a+1;
console.log(a);
//语义
var age = 30;
var age =31;
console.log(age);
</script>
四、数据类型
1、数据类型
数据类型是值的内部特征,它定义了值的行为,以使其区别于其他的值,JavaScript 中的变量本身是没有类型,变量持有的是所对应的值的数据类型。
2、数据类型分类
JavaScript语言可以识别下面 7 种不同类型的值:
六种基本数据类型:
boolean. 布尔值,true 和 false.
null. 一个表明 null 值的特殊关键字。
undefined. 变量未定义时的属性。
Number. 表示数字,例如: 42 或者 3.14159。
String. 表示字符串,例如:"Howdy"
Symbol ( 在 ECMAScript 6 中新添加的类型).。
还有引用数据类型(对象)
数组
函数
Object
五、内存
关于内存的详解,可以参考go语言使用-基础语法(5)之值类型和引用类型中内存中堆区和栈区的简单示意图 。语言都是相通的,希望有助你理解。
1、什么是内存?
电脑内存条如下图:
电脑硬盘:
1).内存条通电后产生的存储空间(临时的)
2).产生和死亡: 内存条(集成电路板)==>通电==>产生一定容量的存储空间==>存储各种数据==>断电==>内存全部消失
3).内存的空间是临时的, 而硬盘的空间是持久的
2、内存中数据
一块内存包含2个数据。
内部存储的数据(一般数据/地址数据)
内存地址值数据
六、数据存储位置
1、JS中的变量都是保存到栈内存中的,
2、基本数据类型的值直接在栈内存中存储,值与值之间是独立存在,修改一个变量不会影响其他的变量
3、对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,而变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响
七、栈和堆:
内存一般分为栈和堆。
栈:储存基本数据类型和地址值。在JS中,存储全局变量, 局部变量 (变量占用空间较小)
堆:储存引用数据类型。在JS中,存储对象 (占用空间较大)
注意:
在JS中 ==运算符比较的是栈内容。