目录
一、数据类型
(一) 基本数据
var a = 20;
var b = a; // 动态运行流程 ==> 第一步 声明一个变量b 第二步取a变量中保存的值 第三步把取到的20赋值给b
console.log(b);
b = 200;
console.log(a);
1. undefined 未定义或定义了变量却没有初始化
undefined的意义: 为了程序的安全而设定的一种数据
var a;
console.log(a);
2. 布尔数据 boolean
true/false都是关键字 代表布尔值(如100>18 就是布尔表达式 它表达的结果是布尔值)
var a = true;
var b = false;
if (a) {
console.log(666);
};
if (100 > 18) {
console.log("可以喝酒");
};
3. null 空
这种类型的数据只有一个数据 就是null
null的意义: 它代表了一个变量是有数据的 只不过还没有业务数据
var a = null;
var b;
console.log(a); // null
console.log(b); // undefined
4. string 字符串
字符串的引号不是字符 是一种标记 为了跟变量名做区分
字符串可以是单引号或双引号 还可以是反引号(ES6)
var a = 'he"l"lo';
console.log(a);
如果a或b有任意一个是字符串 就会把另一个不是字符串的数据转化为字符串 然后拼接
var a = '100';
var b = 200;
var c = a + b;
console.log(c);
(二) 引用数据
引用数据类型: 一个大型的复杂的基本数据和引用数据的"集合体"
var a = [10,20,30];
var b = a; // 动态运行流程 ==> 第一步 声明一个变量b 第二步把变量a对应的引用数据的内存空间让b变量也去引用
console.log(a);
console.log(b);
console.log(b[1]);
b[1] = 200;
console.log(b);
console.log(a);
1. 数组
保存的元素用逗号隔开
数组取元素是通过下标取值的 从0下标开始
数组中可以保存很多数据 每一个数据的类型是不限定的
var arr = [10, 20, 30, 500, 200, "hello", 18, null, true, undefined];
var n1 = arr[3];
console.log(n1);
var n2 = arr[0];
console.log(n2);
var arr = ["hello", 20, , , 100];
arr[2] = "h5"; // 在下标2添加元素
console.log(arr[2]);
数组也可以保存数组
var arr = [200, "hello", [10, 20, 30], 400];
console.log(arr[2]);
console.log(arr[2][2]);
var arr2 = arr[2];
var re = arr2[2];
console.log(re);
var arr3 = [1,[1,[1,200]]];
console.log(arr3[1][1][1]);
var arr4 = [["导航1", "导航2"], ["分类1", "分类2"]];
var re1 = arr4[1][0];
console.log(re1);
2. 对象 object
跟数组一样 用来保存数据 只不过每一个数据都自己设计"下标"(键值对的键)
对象可以保存任何类型的数据
var obj1 = {
name: "karen",
age: 24
};
var a1 = obj1["name"];
console.log(a1);
var b1 = obj1["age"];
console.log(b1);
obj1["age"] = 25;
console.log(obj1);
var obj2 = {
name: "jack",
age: "25",
books: ["js", "css", "ts"]
};
console.log(obj2["age"]);
console.log(obj2["books"]);
console.log(obj2["books"][2]);
var obj3 = {name:"jack"};
obj3["name"] = "karen"; // 如果已经有这个属性了 就会覆盖之前的值
obj3["age"] = 25; // 如果没有age成员 就会添加一个新成员age 然后赋值25
var a = "zzz";
var b = "firstname";
obj3[b] = a;
console.log(obj3);
对象的成员有一种简便写法(语法糖)
obj["name"]<==>等价于obj.name
var obj = {
age: 20
};
obj.age = 200;
console.log(obj.age);
3. 函数
函数的写法 function关键字小括号大括号
函数不会自己运行大括号中的代码
// 声明一个函数
function fn() {
console.log(123);
};
// 定义一个函数
var a = function() {
};
var a = function () {
console.log(666);
};
console.log(a);
a(); //函数的调用 ==> 让大括号的代码运行 而且调用一次就会运行一次
var b = a;
b();
函数是一种非常特殊的对象(引用数据) 因此typof检测函数的结果不再是object 而是function
var f1 = function() {
};
console.log(typeof f1);
var f2 = function() {
};
f2.age = 200;
var f3 = f2;
f3.age = 100;
console.log(f2.age);
二、typeof
typeof: 分清一个变量中保存的数据是什么类型的数据
var a = 20;
var b = '200';
var re = typeof (a);
console.log(re); // number
var re1 = typeof (b);
console.log(re1); // string
var re2 = typeof (null);
console.log(re2); // object
var re3 = typeof (function () {});
console.log(re3); // function
笔试题
var a = 100;
a = a + 21;
var b = a % 19;
var re3 = typeof (b);
// 问re3的数据类型是什么?
console.log(re3); // 取出变量re3的值并打印
var re4 = typeof (re3);
console.log(re4); // re3的数据类型: string