javascript 是一种动态语言,解释性语言,脚本语言。
特点:声明变量的关键字只有一个var,解释型语言解释一行执行一行,现解释现执行,而且数据的类型天生就是浮点型。
** 由值来决定变量类型 **
typeof() -- 返回变量的数据类型
值类型--数据类型
分类:
- 不可改变的原始值(栈数据)
- Number, String, Boolean, undefined, null
- 引用值(堆数据)
- array, object, function
详细分析:
1. Number:数值类型
- 如:
var a = 2;
var a = -3.1415;
var a = 100;
2. String:字符串类型
- 无论在双引号里面写的是什么,都是叫字符串。
- 如:
<script>
var a = "abc";
document.write(typeof(a) + " : " + a);
document.write("<br>");
var b = "你好";
document.write(typeof(b) + " : " + b);
document.write("<br>");
var c = "123";
document.write(typeof(c) + " : " + c);
</script>
image.png
3. Boolean 布尔类型
- 两个值:true, false
- 如:
var a = true;
document.write(typeof(a) + " : " + a);
document.write("<br>");
var b = false;
document.write(typeof(b) + " : " + b);
image.png
4. undefined
- 值就为undefined,意思:没有定义的。
- 表示: 一个变量经过了声明但没有赋值,其值就为undefined。
- 如:
var a = undefined;
document.write(typeof(a) + " : " + a);
document.write("<br>");
var b;
document.write(typeof(b) + " : " + b);
image.png
5. null
- 表示一种占位,就是为了占位置。
- null -- 空的,把原来的东西覆盖掉就是用null。
- 注意:null数据类型为:object。
- 如:
var a = null;
document.write(typeof(a) + " : " + a);
image.png
6. array 数组类型
- 数组里面的值可以是多种数据类型
- 如:
var arr = [1, 2, 3, 4, false, "abc"];
原始值与引用值的区别
原始值存入stack(栈)里面,引用值存入heap(堆)里面。赋值方式不同。
- 原始值内部,栈内存与栈内存之间的赋值关系是copy关系,就是说,从栈内存中拷贝变量的一个副本,再将副本存到另一个变量里面。原变量的值发生改变,存储副本的变量保持原有值,不会随原变量的值改变而改变。
- 原始值的数据无法改变,就是说:一个栈内存里面已经存有一个变量的值了那么就无法改变了。
如:
var a = 10;
var b = a;
document.write(a);
document.write("<br>");
document.write(b);
document.write("<br>");
a = 20;
document.write(a);
document.write("<br>");
document.write(b);
image.png
- 引用值:栈内存里面存放堆内存里面数值的地址信息,引用值拷贝给另一个引用值的是地址信息,这是为了方便找到堆内存里面的值。
var arr = [1, 2];
var arr1 = arr;
document.write(arr);
document.write("<br>");
document.write(arr1);
document.write("<br>");
arr.push(3);
document.write(arr);
document.write("<br>");
document.write(arr1);
image.png
- 对原引用值进行重新的赋值不会影响副本引用值的值:
var arr = [1, 2];
var arr1 = arr;
document.write(arr);
document.write("<br>");
document.write(arr1);
document.write("<br>");
arr = [1, 3];
document.write(arr);
document.write("<br>");
document.write(arr1);
image.png
网友评论