js 数据类型和流程控制
数据类型
1.原始类型:number、string、boolean、undefined、null
特点 : 1.单值 2.动态:数据的类型,由值来决定
2.引用类型:、array(数组)、object(对象)、function(函数)
- 数组 : 每个成员可以是原始类型,也可以是引用类型
// 数组
const arr = ["手机", "2", "4000"];
console.log(arr);
console.table(arr);
console.log(arr.length);
// 判断是否为数组;
console.log(Array.isArray(arr));
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
- 对象 : 最主要功能,把一些常用操作封装
// 对象
let obj = {
name: "电脑",
num: 2,
price: 5000,
};
console.log(obj["name"]);
// 符合js标识符命名规范的属性名,可以用'.'访问
console.log(obj.name);
// 最主要功能,把一些常用操作封装
obj = {
name: "电脑",
num: 2,
price: 5000,
total: function () {
// this 当前对象的引用
return this.num * this.price;
},
};
console.log(obj.total());
数组和对象一起使用
// 数组和对象一起使用
const arr_obj = [
{ name: "手机", num: 1, price: 4000 },
{ name: "电脑", num: 5, price: 7000 },
{ name: "耳机", num: 20, price: 30 },
];
console.log(arr_obj);
- 函数 : 既是数据类型,也是对象
//将函数当成数据类型的优点
//1.当成函数的参数 : 回调
// 回调函数
function f1() {
return "world";
}
function f2(f) {
return "hello" + f;
}
// 将f1作为参数传给f2;
console.log(f2(f1()));
//2.当成函数的返回值 : 闭包 可以实现静态变量的效果
// 闭包
function b() {
return function () {
return "Hello";
};
}
console.log(b()());
流程控制
分支 : 有条件的执行某一段代码
- 单分支 : if(){}
let age = 20;
if (age >= 18) {
console.log("已经成年");
}
- 双分支 : if(){}else{}
let age = 17;
if (age >= 18) {
console.log("已经成年");
} else {
console.log("没有成年");
}
三元运算符:语法糖 条件?真:假
let age = 17;
age >= 18 ? console.log("已经成年") : console.log("未成年");
- 多分支 : if(){}else if(){}else{}
age = 18;
if (age >= 6 && age <= 12) {
console.log("小学");
} else if (age > 12 && age <= 15) {
console.log("初中");
} else if (age > 15 && age <= 18) {
console.log("高中");
} else {
console.log("无");
}
多分支语法糖 : switch
// 区间判断,并非单值,一定要用true才能进入分支
switch (true) {
case age >= 6 && age <= 12:
console.log("小学");
break;
case age > 12 && age <= 15:
console.log("初中");
break;
case age > 15 && age <= 18:
console.log("高中");
break;
default:
console.log("无");
}
循环 : 索引初始化,循环条件,更新循环条件
- while : 入口判断
const commodity = ["啤酒", "饮料", "矿泉水"];
// 起始的索引
let i = 0;
// 条件
let length = commodity.length;
while (i < length) {
console.log("第" + i + "个商品是:" + commodity[i]);
i++;
}
- do : 出口判断
i = 0;
do {
console.log("第" + i + "个商品是:" + commodity[i]);
i++;
} while (i < length);
- for es6 中快捷输出 for-of(不能遍历对象,可以用 for-in)
for (let i = 0; i < commodity.length; i++) {
console.log("第" + i + "个商品是:" + commodity[i]);
}
for (let item of commodity.values()) {
// item为每个数组的变量名
console.log(item);
}