JavaScript基础知识点

261 阅读7分钟

JavaScript基础知识点

JS的简介与基础应用

简介

  1. 概念:JavaScript 是一种运行在客户端(浏览器)的编程语言
  2. 作用
    • 网页特效 (监听用户的一些行为让网页作出对应的反馈)
    • 表单验证 (针对表单数据的合法性进行判断)
    • 数据交互 (获取后台的数据, 渲染到前端)
    • 服务端编程 (node.js)
  3. 组成
    • ECMAscript: ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言,可以理解为是JavaScript的一个标准。
    • DOM: 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API) 。
    • BOM

文件引入方式 /内容注释/结束符

  • 引入方式
  1. 内联 (不推荐)
 <body>
    <!-- 不常用  编写代码的体验不好,很容易写错,  了解一下即可 -->
    <button onclick="alert('过万啦')">点击我 我就月薪过万</button>
    <button onclick='alert("也过万啦")'>点击我 我就月薪过万</button>
    <div onclick='alert("也过万啦")'>我来啦</div>
  </body> 
  1. 内部

    <body>
        <script>
          // 可以在这个 script 标签  里面写js代码
          alert('你好 js 我呸');
        </script>
    </body>
    
  2. 外部,引入写好的 .js 的文件

    <body>
        //用 script 标签  引入
        <script src="./js/弹出窗口.js"> </script>
      </body>
    
  • 内容注释
    1. 单行注释 ctrl+/ (只对单行内容生效)
    2. 多行注释 shift+alt+a (单/多行内容都生效)
  • 结束符
    1. ; (分号) 代表一行代码的结束
    2. 直接按下enter键也表示一行代码的结束

JS的知识点与应用

输入/输出

  • 输出

    1. 输出到页面的文本

      <body>
          <script>
              //输出到页面的文本
            document.write( ' 万少这天下课被整个班级的同学欺负 '</script>
      </body>
      
    2. 页面的弹窗

      <body>
          <script>
              //页面弹窗
            alert( ' 弹出一个窗口 ' )
          </script>
      </body>
      
    3. 在控制台的内容

      <body>
          <script>
              //输出到控制台的内容
            console.log('在控制台中输出的内容')
          </script>
      </body>
      
  • 输入

    1. 描述: 弹出一个对话框,获取用户的输入

    2. 语法

      <body>
          <script>
              //弹出对话框获取用户输入
            prompt("请输入你的姓名")
          </script>
      </body>
      
  • 小案例

    1. 需求: 将用户的输入值输出到网页控制台中

    2. 代码

      <body>
          <script>
              //1,获取用户输入
              username=prompt("请输入你的姓名")
              //2,将用户的输入值输出到控制台
              console.log("username")
          </script>
      </body>
      

变量

  • 概念:用来装数据的容器

  • 使用方法

    1. 创建变量
      • let userName;
    2. 变量赋值
      • userName= '章北海'
    3. 使用变量
      • console.log(userName)

    注:可以在创建变量的同时赋值 let userName= '章北海'

  • 规则和规范

    1. 不能 使用某些关键字 充当变量名称,例如 : let let=123 / let for=123
    2. 不能以数字开头
    3. 可以使用英文开头 _ $
    4. 最好见名知意
    5. 小驼峰命名风格 userName

数据类型

基本数据类型:

  1. Number 数字型
  2. String 字符型
  3. Boolean 布尔型 取值( ture / false )
  4. undefined 未定义
  5. null 空值

数据类型检测:typeof

<body>
    <script>
        // 返回的什么类型  String  Number Boolean null
        console.log(typeof 123)   //Number 数字型
        console.log(typeof '123')  //String字符型
        console.log(typeof true)  //Boolean布尔型
        console.log(typeof undefined)   //object
        console.log(typeof null)     //object
        
        let num = 10
        console.log(typeof num + '11')  //String字符型
    </script>
</body>

数据类型转换

  1. 隐式转换 用的多 简单
    • 转数字
      • let num='123' ; let num2=+num1; (给num1前面加上"+"
      • let num='123' ; let num2='123'-0 ; (让num1的值 - 0
    • 转字符
      • let str='123'; (直接加上 ‘ ’ )
      • let str1=str+''; (变量 + ‘ ’)
  2. 显式转换
    • 转数字
      • let num=Number('123')
    • 转字符
      • let str=String(123)

小案例(订单信息打印)

  1. 需求:让用户输入订单信息后,将内容按表格的特定格式输出到页面

  2. 效果图

    1648311636427

  3. 代码

    • 重要提醒 document.write(``),括号里的标签结构要用反引号包裹,变量的连接必须要用 ${ } 包裹
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
    
            table {
                text-align: center;
                margin: 100px auto;
            }
            caption {
                font-style: 30px;
                font-weight: 700;
            }
        </style>
    </head>
    <body>
        
        <script>
            //重要的部分
            let goods=prompt('商品名称')
            let price=prompt('商品价格')
            let count=prompt('商品数量')
            let sum=price*count
            let address=prompt('收货地址')
            
            document.write(` 
            <table border="1" cellspacing="0">
                <caption>订单付款确认页面</caption>
                
                <tr>
                    <th>商品名称</th>
                    <th>商品价格</th>
                    <th>商品数量</th>
                    <th>总价</th>
                    <th>收货地址</th>
                </tr>
                <tr>
    				//重要的部分
                    <td>${goods}</td>
                    <td>${price}</td>
                    <td>${count}</td>
                    <td>${sum}</td>
                    <td>${address}</td>
                </tr>
        </table>`)
        </script>
    </body>
    </html>
    

运算符

算术运算符

  • + - * / (加减乘除)
  • % 取余数/取模 例: 10 % 3 = 1

赋值运算符

  • num += 10 等价于 → num=num+10

  • num - = 10 等价于 → num=num **-**10

  • num *= 10 等价于 → num=num X 10

  • num /= 10 等价于 → num=num/10

    <SCript>
        let num =10
        num+=5;    // num = num + 5 =15
        num-=2;   // num = num - 2= 8
        num *=2;   // num = num * 2 =20
        num/=2//num=num/2=5
    </SCript>
    

一元运算符

  • 自增:使变量的值在原来的基础上 + 1

    • ++i: 先 +1 ,再使用
    • i++:先使用,再 +1
    <SCript>
        let i =8
        先 +1 然后用 +1后的值与2相加
         ++i  + 2   // = 11
         console.log (i)    // 9
        
        let a =8
        先用初始值与 2 相加  然后a变量自身值才 +
        a++  + 2   // =10
        console.log (a)    // 9
    </SCript>
    
  • 自减:使变量的值在原来的基础上 -1

    • - - i : 先 -1 ,再使用
    • i - - : 先使用,再 -1
    <SCript>
        let i =8
        //先  -1  再与 2 相加
         --i  + 2   // = 9
         console.log (i)    // 9
        
        let a =8
        //先使用初始值与  2相加,后-1
        a--  + 2   // =10
        console.log (a)    // 9
    </SCript>
    

比较运算符

  1. 比较后返回的值为布尔型(true / false)
  2. 基本分类
    • '>' 大于
    • '<' 小于
    • == 等于(只比较结果,不比较数据类型) 例: 1=='1' //true
    • >= 大于或者等于
    • <= 小于或者等于
    • != 不等于 不会判断类型
    • === 判断相等 数据类型都相同才 true
    • !== 不相等 值或数据类型有一个不相同就 true

逻辑运算符

  • 与 / 且: && ( 一假即假 ,全真才真 )
  • 或: || ( 一真则真,全假才假 )
  • 非 取反: ! (取相反 ) 例: !(true) // false

短路运算

概念:由于|| && 两个逻辑运算符的特性延伸的运算规则**( || && 才有短路运算)**

  • || 执行到第一个 判定为 true 的条件就不继续往后执行
  • && 一直执行,直到遇到第一个判定为 false 的条件就不会往下执行了
<SCript>
    //  || 的短路运算举例
    10 < 3 || console.log("我在沉思") // 我在沉思
   
      //  &&的短路运算举例
10 > 3 && console.log("出去吃饭")   //出去吃饭
</SCript>

条件语句

if条件语句

  1. 单分支

    表达式: if (条件) {执行的代码}

    <script>
          /* 
          1 获取用户输入的分数
          2 分数做判断 
            如果大于 700 恭喜他 
           */
    
          let score = +prompt('请输入您的分数');
    
          // if 单分支
          if (score > 700) {
            alert('恭喜你 来啦');
          }
        </script>
    
  2. 双分支

    表达式: if(条件){执行的代码1}else{ 执行代码2} 其中else 表示否则。。。

    <script>
          /* 
          需求 
          填写 考试的分数 
           如果 分数 > 700   蓝翔
           否则  去能去北大 
           */
    
          //  我忘记了  最好要转一下
          let score = +prompt('考试的分数');
    
          if (score > 700) {
            alert('蓝翔欢迎你');
          } else {
            alert('怀恨去北大');
          }
        </script>
    
  3. 多分支

    表达式:if(条件1){执行的代码1} else if (条件2){执行的代码2} else {以上都不满足了才执行的最后的逻辑}

     <script>
          // let day = 1;
    
          let day = +prompt('请输入今天是星期几');
    
          if (day === 1) {
            console.log('煲仔饭');
          } else if (day === 2) {
            console.log('生猛海鲜');
          } else if (day === 3) {
            console.log('烤全羊');
          } else if (day === 4) {
            console.log('吃牢饭');
          } else if (day === 5) {
            console.log('软饭');
          } else {
            //  6 7 ........
            console.log('白饭');
          }
        </script>
    

三元表达式语句

表达式: 条件 ? 满足条件了执行代码1 : 不满足条件就执行代码2

 <script>
      /* 
      条件 ?  满足条件执行的代码 : 不满足条件 执行的代码
       */
      let num1 = 10;
      let num2 = 99;

      let num3; // 就要等于 num1 和 num2 中 大的值

      num3 = ( (num1 > num2) ? num1 : num2); 

      console.log(num3);
</script>

循环语句

while循环

适用场景:循环次数未知的条件循环语句

代码关键:

  1. 变量初始值 let str
  2. 循环的条件 while(str!=="爱" )
  3. 变量发生改变 str = prompt("请输入你爱不爱我")

举例:

<script>
      // 1 变量初始值
      let i = 1;
      // 2 终止条件
      while (i <= 10) {
        document.write(`这个是第${i}循环`);
        // 3 变量需要改变
        i++;
      }
    </script>

for循环

  1. 代码结构

    表达式: for(变量初始值;循环的条件判断;变量发生){循环体}

    举例:

    <script>
        //let index = 1 变量初始值
        //  index <=100  条件判断
        //  index++变量的改变式
        for (let index = 1; index <=100; index++) {
            //每次循环执行的代码
            console.log(index);
        }
    </script>
    
  2. continue / break

continue: 跳过本次循环 开启下一轮循环

break: 直接终止循环 ( 能使用break就使用break ,避免后续的不必要的循环)

举例:

 <script>
      /*
      for
      控制循环结束
      1 continue 跳过本次循环 继续开启下次循环 (不是必须)
        continue 想要跳过这个循环 不一定通过它
         我们自己 if else 也能实现类似的功能
      2 break 直接 循环结束 不玩了
        也不是必须 , 我们也是可以通过  if-else 来实现它的功能 
        但是如果可以 使用break的话 尽量使用它 (性能更加好) 因为break会终止剩下的循环
      */
     
     //continue: 跳过本次循环
    for (let i = 1; i <= 10; i++) {
        if (i % 2 !== 0) {
         // 是奇数的话  就跳过这次循环
        continue
        }
    	console.log(i);
    }
	
     //break: 直接终止循环 
     for (let index = 1; index <= 10; index++) {
         // 如果当前的index = 5 ,就不再往下 循环了,就终止循环
         if (index === 5) {
             break;
         }
         // //  index===5&&break // 不能简写 报错!!
         console.log(index);
     }
</script>

关于循环的补充(了解)

  1. Switch-case

    • 类似 if- else if -else
    
    <script>
        let day = 1;
        switch (day) { // 你要判断谁
        case 1: //  if  (day === 1)        
        // 执行 1 的业务逻辑
        console.log('白饭');
        case 2:
        console.log("喝粥");
        break
        case 3:
        console.log("海鲜");
        break
        default:
        // 以上都不满足 就执行代码
        console.log("不吃啦");
         }
    </script>
    
  2. do-while

    • 类似while循环
    • 不管条件是否成立,都会先执行一次 do 中的代码
     <script>
          /* 
          1 循环 3种写法
            1 for 循环
            2 while 循环
            3 do while 循环 很少
              1 先执行一次 do里面的代码,然后再去执行while里面的程序
              2 哪怕  while里面的条件不成立 也会先执行一次do中的代码
           */
    
          let index = 0;
          do {
            console.log('执行了do 里面的代码',index);
            index++
          } while (false); //即使while里的条件是false 也会先执行一次do里面的条件
        </script>
    

循环综合案例(⭐⭐)

需求:第一行⭐,第二行⭐⭐,第三行⭐⭐⭐,第四行⭐⭐⭐⭐,第五行⭐⭐⭐⭐⭐。。。

分析:

  1. 第一个循环,控制行数
  2. 在每个行数循环中,列数发生了变化
    1. 第一次循环 列数 :1
    2. 第二次循环 列数 : 2
    3. 第三次循环 列数 : 3
    4. 发现 列数不能写死
    5. 列数也需要写一个循环,且得和行数产生联系
    6. 发现每一行的列数与该行的行数一致
  3. 所以每一行的子循环的次数刚好等于该行的行数
<script>
     
      for (let index = 1; index <= 5; index++) {
        // 第二个循环中   判断条件 5 => index(第一层循环的变量值)
        for (let index1 = 1; index1 <= index; index1++) {
          document.write('⭐');
        }
        document.write('<br/>');
      }
</script>

数组

概念: 存放一组相关数据 ,方便我们去使用

常见使用场景

  • 一般都会和循环一起出现
  • for(let index=0;index<数组的长度;index++){ 数组[index] 做一些业务}

属性 (结合 等于号 = )

  • .length 数组长度属性 (数组里面元素的个数)
  • arr.length = 10

数组的基本使用

  1. 声明数组

    let arr1=['苹果','香蕉','哈密瓜','芒果']
    
  2. 数据编号/索引/下标

    数组中的索引以 0 开始,在上述数组的数据中,'苹果'的索引为arr[0]

  3. 获取数组里面的数据(数组里面的每一个数据都称为数组元素

    <script>
        let arr1=['苹果','香蕉','哈密瓜','芒果']
        //获取第一个数据
        arr[0]  //'苹果'
        //第二个数据
        arr[1] //'香蕉'
    </script>
    

数组的增/删/改

  1. 数据增加

    • .push : 把新的元素 设置到 数组的**末位 ** arr.push(新的元素)
    • .unshift :是把新的元素 设置到数组的开头 arr.unshift(新的元素)
    • 在开发中 push 用得最多 ,unshift 了解即可
     <script>
          let arr = ['black', 'red'];
    	//添加新元素到末尾
          // arr.push('yellow');
          arr.unshift("yellow");
          console.log(arr);
        </script>
    
  2. 数据删除

    • pop:删除末位的一个元素 arr.pop()
    • shift:删除开头的一个元素 arr.shift()
    <script>
          //  数组 删除最后一个元素 pop
          let arr = ['西瓜', '香蕉', '麻瓜'];
    
          // 希望删除掉最后的一个元素  麻瓜 不要
          // arr.pop();
    
          // console.log(arr); // ['西瓜', '香蕉']
    
    
          // 希望删除掉第一个元素  
          arr.shift();
    
          console.log(arr);// 
        </script>
    
  3. splice 的妙用

  • 指定删除多个: arr.splice(1, 2); 表示从arr数组中索引为 1 的元素开始,删除2个元素
  • 指定位置新增:arr.splice(1, 0, '红薯') ,表示从arr数组中索引为 1 的元素开始,删除 0 个元素,并在索引为 1 的位置增加一个 '红薯' 的元素
  • 指定位置替换:arr.splice(1, 1, '红薯'),表示从arr数组中索引为 1 的元素开始,删除 1 个元素,并在索引为 1 的位置增加一个 '红薯' 的元素(可视为替换索引为 1 的元素)
 <script>
      let arr = ['西瓜', '香蕉', '麻瓜'];
      // 现在想要删除 香蕉

      // splice("想要删除的元素的下标","想要删除几个");

      // 删除数组中的下标为1的元素,
      // 从 1 的位置开始 想要删除几个
      // arr.splice(1, 2);
      //
      // console.log(arr);

      //  指定位置来插入元素
      // splice("想要删除的元素的下标","想要删除几个","在该下标位置添加元素");

      // 在 1的位置,删除0个元素,增加一个红薯
      // let arr = ['西瓜', '香蕉', '麻瓜'];
     //arr.splice(1, 0, '红薯');
      // ['西瓜', '红薯', '香蕉', '麻瓜'];
      arr.splice(1, 1, '红薯');
      console.log(arr);
    </script>

关于数组的补充

  1. 获取数组最后一个元素 : arr[arr.length-1]
  2. 新增或者修改元素 : arr[10] = "元素" 直接指定下标位修改或增加元素即可
  3. 数组可以存放任意类型的数据 : let arr =[1,"abc",null,true]
  4. 数组快速删除元素的方式 :
  • arr.length = 0
  • arr=[]
  • 数组的长度是可以动态变化

数组案例拓展

  1. 遍历数组:用循环把数组中每个元素都访问到,一般会用for循环遍历

    <script>
          let arr = ['苹果', '西瓜', '香蕉', '葡萄'];
    
          //  输出数组中的每一个元素
          for (let index = 0; index < arr.length; index++) {
            // index = 0 开始做变化  1 2 3 4
            console.log(arr[index]);
          }
    </script>
    
  2. 数组筛选: 把数组中 大于等于10元素 存放到新的数组

    <script>
          //  把数组中 大于等于10元素 存放到新的数组
          let arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
          // 定义一个新数组,存放过滤好元素
          let arr2 = [];
    
          // 对 第一个数组 循环
          for (let index = 0; index < arr1.length; index++) {
            // 判断当前的循环的元素 和 10 直接的关系
            if (arr1[index] >= 10) {
              // 需要把当前的这个元素 添加到新数组中
              arr2.push(arr1[index]);
            }
          }
          console.log(arr2);
        </script>
    

函数

概念与作用

  1. 概念: 专门执行特定任务的代码片段
  2. 作用:
    • 简化代码
    • 可重复调用
    • 封装程序功能

函数的使用

  1. 定义函数 function getMax (参数1,参数2) {要执行的代码片段 }

  2. 调用函数: getMax()

    <script>
          let arr1 = [1, 3, 2, 66, 33, 22];
          let arr2 = [1, 3, 2, 663, 33, 22];
          let arr3 = [1, 3, 2, 665, 33, 22];
        
    	//定义函数
        function getMax(arr) {
            let max = arr[0];
            for (let index = 0; index < arr.length; index++) {
                if (arr[index] > max) {
                    max = arr[index];
                }
            }
            //设置函数的返回值
            return max;
        }
        
        //调用函数
        let max1 = getMax(arr1);
        let max2 = getMax(arr2);
        let max3 = getMax(arr3);
        console.log(max1, max2, max3);
        </script>
    

关于参数和返回值

  1. 参数

    • 形参:function getMax (n1,n2) {要执行的代码片段 } 此时 n1 和 n2 表示形参
    • 实参:getMax(100,200) (100 实参1 200 实参2 )
    • 形参和实参的位置是一一对应的
  2. 函数的返回值(return

    概念: return 表示执行完函数反馈回来的值,需开发者设置

    • 定义函数的时候 可以决定函数拥有返回值
    • function getMax(){return 123}
    • return 123 (123就是返回的值 )
    • 如果函数内部 没有写return 的话 默认就是返回了 undefined

匿名函数与自执行函数

  1. 匿名函数
    • function(){}
    • let func2 = function(){}
  2. 自执行函数
    • 代码: (匿名函数代码块)()
    • 作用:防止变量污染,执行一次性任务
    • 特点:在定义函数的同时也在执行函数

作用域与作用域链

作用域

  1. 全局作用域

    • 直接写在script 标签内的代码
    • 全局变量 任意的地方都可以访问
    <script>
          // 直接写在全局作用域下的变量 =  全局变量  在任意的地方来访问
    
          let num = 100; // 全局变量   在任何地方都可以访问 
    
          function getMax() {
            console.log('函数 访问全局变量', num);
          }
    
          getMax();
    
          for (let index = 0; index < 2; index++) {
            console.log('for循环内 块级作用域 访问全局变量', num);
          }
    
          if(true){
            console.log("if语句 也 可以访问全局变量",num);
          }
        </script>
    
  2. 函数作用域-局部作用域

    • 写在函数内部中的变量
    • 只能在自己的大括号中使用
    <script>
          // 局部变量
          // 如果是在函数内部定义的变量 就叫做局部变量
          // 局部变量 不能在 它的大括号之外使用的,否则就会报错!! 
          
          let msg = 10000; // 全局变量
    
          // 局部变量  函数内部 声明的变量
          function getMax() {
            // 声明一个数字
            let num = 200; // 局部变量
          }
    
          // 局部变量 不能在 超出它的大括号来使用
          console.log(num); // 会报错 
        </script>
    
  3. 块级作用域

    • for if while大括号里面定义的变量
<script>
      // 块级变量 就是我们在块级作用域内 定义的变量
      // 块级变量 类似局部变量,也是超出了自身的大括号 不能使用

      for (let index = 0; index < 2; index++) {
         // num 块级变量 
        let num = 100;
      }
      // console.log(num);// 大括号外使用块级变量  出错!! 
      /* 
      小结
      1 分类     分成两类即可  
      1 全局变量
        直接放在 script标签内的变量
      2 局部变量 用大括号包起来的变量
        1 函数内部变量
        2 块级变量 
       */
    </script>

作用域链

  • 只是一种代码寻找变量来执行的 机制 规则
  • 就近原则
  • 就近的参照物是 函数的声明、函数的定义来寻找最近的变量
<script>
      // 判断当前变量 输出是什么  
      // 就近原则   判断是要根据 函数的定义 来判断 而不是函数的调用 
      // 函数的定义 代码位置来判断  100  这个!! 
   
      let num = 100;
      function func1() {
        let num = 200;
        // 函数的调用 
        fun2();
      }

   
      // 函数的定义-声明 
      function fun2() {
        console.log(num);
      }

      func1(); //log输出的num=100,因为fun2在定义时能访问到的变量值为全局变量num=100
    </script>

对象

基本概念

  1. 概念

    • 存放一堆无序的数据的集合
    • 可描述具体复杂的实物
    • 数据类型为引用类型(堆)
  2. 代码/组成

    <script>
          // 描述一个复杂的事物 可以使用对象
          // 对象 有两个特点 1 属性  2  方法(函数)
          let person = { //声明一个对象
            // 姓名
            uname: 'andy',  //多个属性之间要以  ,  隔开
            age: 18,
            sex: '男',
            sayHi:function(){  //定义一个方法
    		document.write('你好,世界')
            }
          };
    
          // 打印一下 这个数据的类型   object/对象
          console.log(typeof person);
          // 打印一下 这个数据   返回的值为对象本身的内容
          console.log(person);
        </script>
    

增删改查

  1. 访问属性/方法

    • 对象名 . 属性名
    • 对象名 [ '属性名' ]
    • 对象 . 方法()
    <script>
          let username = 'color';
          let person = {
            username: '海贼王',
            color: 'yellow',
          };
    
          // 访问它
          console.log(person.username); // 固定用户
          console.log(person['username']); //
          // // person['color'];
    
          console.log(person[username]); // 中括号里 代码没有加字符串 表示一个变量
          // console.log(person['color']); // 中括号里 代码没有加字符串 表示一个变量
    
          // console.log(person[color]); //  color是一个变量  没有这个变量  报错
          // console.log(person.sdfdfdfd); // undefined
        </script>
    
  2. 增加/修改 (属性 方法)

    • 对象名.新属性名 = 新值
    <script>
        let person = {
    	
    	};
        //直接写新增的属性名及属性值即可
        person.username="普通人";
        
       // 直接访问到要修改的属性重新赋值即可
        person.username="哈士奇";
        console.log(person) // 哈士奇
    </script>
    
  3. 删除属性/方法

    • delete 对象名 . 属性名
    <script>
          // 声明一个对象
          let person={
            username:"海贼王"
          };
    
          // 不想看了  给删除掉
          delete person.username;  // 删除对象中的  username属性
    
          console.log(person.username); // undefined 
    </script>
    

遍历对象(for in)

  • 利用for in 访问到对象里的每一个属性

    <script>
    
          //  数组和对象 都可以遍历
          // 数组的遍历 使用 for循环
          // 对象的遍历  使用  forin 
          // 对对象遍历的时候   可以直接获取到 对象的属性名 
          // 根据对象的属性名获取对象的熟悉值 person[k] 
    
          // 创建一个对象
          let person = {
            age: 18,
            username: '普通人',
            height: 180,
          };
          // 遍历对象  forin
          for (let k in person) {
            // k 表示变量 k = "username"  不能写 引号  'k'
              //加引号表示属性名为 k 的属性 遍历会出错
            console.log(`属性名:${k}  属性值${person[k]} `);
          }
        </script>
    

内置数学对象

定义:浏览器已设定好的关于部分数学运算的,方便开发者使用的数据集

  • 随机数 Math.random( ) 返回 0~1 包含0但是不包含1

  • 向上取整 Math.ceil() 天花板函数 即使是1.01也会取整为2

  • 向下取整 Math.floor() 地板函数 即使是1.99也会取整为1

  • 四舍五入 Math.round()

  • 幂运算 Math.pow(数值,指数) 例:Math.pow(2,3) 2的立方

  • 绝对值 Math.abs()

  • 固定区间内取随机整数小技巧

    <script>
            //在min ~ max 这个区间内取随机整数
            function getRandom(max,min) {
                //(max-min)是为了计算出数值的区间宽度
                Math.round(Math.random()*(max-min)+min)
            }
    </script>
    

数据类型分类的补充

数据类型分类

  1. 基本数据类型,也叫值类型( string,number,bool , null,undefined )
  2. 引用数据类型,复杂类型
    • object,array , function 等
    • let abc={};let bcd = abc;两个变量是完全等价修改了 第二个变量,第二个变量也会发生影响

详情见下图

1649141764425

1649141783298