博客列表 >JS入门之类型和流程

JS入门之类型和流程

斗人传说
斗人传说原创
2022年07月22日 01:25:31328浏览

博客已迁移至自建网站,此博客已废弃.请移步至:https://blog.ours1984.top/posts/jstype/ 欢迎大家访问

  • 有了数据类型,才能解析数据
  • 相同数据类型才有比较意义,进行运算

原始类型

类型 举例
number 123.5
string “123”
boolean true
undefined 未初始化变量
null 是object类型
  1. 单值: a = 1, b=’a’
  2. 动态: 数据类型由值的类型确定
  1. let x = 123;
  2. // console.log(typeof x);
  3. x = 'php.cn';
  4. // Number -> String
  5. // console.log(typeof x);

引用类型

ZNW`0${H8AAR`K$Y2T}43K8

array数组

每个成员可以是原始类型,也可以是引用类型.每个成员类型可以不一样,同样可变

  1. const arr = ['电脑', 2, 5000];
  2. // console.log(arr);
  3. console.table(arr);
  4. console.log(arr[0]);
  5. console.log(arr[1]);
  6. console.log(arr[2]);
  7. console.log(arr.length);
  8. console.log(typeof arr);
  9. console.log(Array.isArray(arr));

object对象

相当于类,对于符合js标识符命名规范的属性名,可以用.来访问.使用键名通用访问方式可访问所有成员

  1. obj123 = {
  2. name: '电脑',
  3. num: 2,
  4. price: 5000,
  5. 'my email': 'a@php.cn',
  6. total: function () {
  7. // this: 当前对象的引用,和当前对象绑定
  8. return this.name + '总价 : ' + this.num * this.price + ' 元';
  9. },
  10. };
  11. console.log(obj123.total());

数组和对象混合使用

  1. obj = [
  2. { name: '手机', num: 2, price: 5000 },
  3. { name: '电脑', num: 5, price: 6000 },
  4. { name: '相机', num: 4, price: 2000 },
  5. ];
  6. console.log(obj);
  7. let res = obj.map(item => item.num * item.price).reduce((acc, cur) => acc + cur);
  8. console.log(res);

function函数

函数既是数据类型,也是对象

将函数当成数据类型的优点

  • 当成函数的参数: 回调
  • 当成函数返回值: 闭包
  1. // 1. 当成函数的参数: 回调
  2. function f1() {}
  3. function f2(f) {
  4. console.log(typeof f);
  5. }
  6. // f2是一函数, 它接受一个函数做为参数,可以将上面声明的f1传入
  7. f2(f1);
  8. // 2. 当成函数返回值: 闭包
  9. function f3() {
  10. return function () {
  11. return 'hello world';
  12. };
  13. }
  14. console.log(f3()());

const

const 的本质: const 定义的变量并非常量,并非不可变,它定义了一个常量引用一个值。使用 const 定义的对象或者数组,其实是可变的。下面的代码并不会报错:

  1. // 创建常量对象
  2. const car = {type:"Fiat", model:"500", color:"white"};
  3. // 修改属性:
  4. car.color = "red";
  5. // 添加属性
  6. car.owner = "Johnson";
  7. // 但是我们不能对常量对象重新赋值:
  8. const car = {type:"Fiat", model:"500", color:"white"};
  9. car = {type:"Volvo", model:"EX60", color:"red"}; // 错误

流程控制

分支

if else if else switch case

区间判断,并非单值,一定用true才能进入分支 必须要用true做为switch入口判断条件

  1. switch (true) {
  2. case age >= 18 && age < 35:
  3. console.log('允许单独观看');
  4. break;
  5. case age >= 35 && age < 60:
  6. console.log('允许二人或多人观看');
  7. break;
  8. case age >= 60 && age < 120:
  9. console.log('建议在孩子的陪同下观看');
  10. break;
  11. case age >= 120 || age < 8:
  12. console.log('非法年龄段');
  13. break;
  14. default:
  15. console.log('少儿不宜');
  16. }
  17. switch (language.toLowerCase()) {
  18. case 'html':
  19. console.log('超文本标记语言');
  20. break;
  21. case 'css':
  22. console.log('层叠样式表');
  23. break;
  24. case 'js':
  25. // case之间没有break,会连续输出
  26. case 'javascript':
  27. console.log('前端通用脚本语言');
  28. break;
  29. default:
  30. console.log('未定义的选项');
  31. }

循环

while do while for

数组可以用while,for,for-of,for-in 对象用for-in

  1. const colors = ['red', 'green', 'blue'];
  2. // es6 : for-of
  3. for (let item of colors) {
  4. console.log('phpcn: ' + item);
  5. }
  6. // 完整语法: 只看值
  7. for (let item of colors.values()) {
  8. console.log('values: ' + item);
  9. }
  10. // 所有键名:只看键
  11. for (let item of colors.keys()) {
  12. console.log('values: ' + item);
  13. }
  14. // 所有键名:看键/值
  15. for (let item of colors.entries()) {
  16. console.log('key-value: ' + item);
  17. }
  18. const obj = {
  19. a: 1,
  20. b: 2,
  21. f: function () {},
  22. };
  23. // 不能用for-of, 用 for -in
  24. for (let key in obj) {
  25. console.log(obj[key]);
  26. }
  27. // 数组也是对象, 数组能否用for-in ? 可以的
  28. for (let key in colors) {
  29. console.log(colors[key]);
  30. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议