js 介绍、变量、字符串、数据类型

一、JavaScript介绍

1.1 初识js

js是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。

  • 作用
  1. 网页特效 (监听用户的一些行为让网页作出对应的反馈)
  2. 表单验证 (针对表单数据的合法性进行判断)
  3. 数据交互 (获取后台的数据, 渲染到前端)
    服务端编程 (node.js)

1.2js的组成

  1. ECMAScript(基础语法):
    规定了js基础语法核心知识。
    比如:变量、分支语句、循环语句、对象等等
  2. Web APIs :
  • DOM: 操作文档,比如对页面元素进行移动、大小、添加删除等操作

  • BOM: 操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器等等

  • 注意:DOM属于BOM

  • 权威网站: MDN

  • 插件:

  • 作用:选中变量名,然后按快捷键,能够让变量快速生成对应的输出
    在这里插入图片描述

  • 快捷:ctrl+shift+L
    在这里插入图片描述

1.3 js的引用

1.3.1 内联js(了解)

写在开始标签中

<body>
    <!-- 内联js -->
    <p style="color:red" onclick='alert("我点击了你")'>我是p元素</p>
</body>
  • 效果图
    在这里插入图片描述
1.3.2内部js(重点)
  • 写在html文件里,用script标签包住
  • 规范:script标签写在</ body>前面,这是因为浏览器是由上解析代码的)(只有在当前页面中可以使用
  • 拓展: alert(‘你好,js’) 页面弹出警告对话框
  • 注意事项:
  1. 将 script标签放在HTML文件的底部附近,是因为浏览器会按照代码在文件中的顺序加载 HTML。
  2. 如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。所以将 JavaScript 代码放在 HTML页面的底部附近通常是最好的策略。
<body>
<p>我是一个p标签</p>
<!-- 内部js  写在</body>的上面-->
<script>
    //  添加js
    alert('开始学习js')
</script>
</body>
  • 效果图:弹出弹框
    在这里插入图片描述
1.3.3 外部js(常用)

单独写在一个.js的文件,然后引入

<p>我是一个p标签</p>
<!-- 外部js -->
    <!-- src:指定想引入的js文件的目录路径,路径可以是相对路径,也可以是绝对路径 -->
    <script src="./1.js">
      // 在引入外部js的同时,如果在script标签中还写了其它的代码,代码会被忽略
        alert('我开始学习js了')
    </script>
</body>
  • 效果图
    在这里插入图片描述

1.4 JavaScript 的注释

  • 单行注释:
    1.快捷:ctrl+/
    2.// 注释内容
  • 多行注释:
  1. 快捷:alt+shift+a
  2. 用处:文档注释-块注释
  3. /* 注释内容 */

1.5 输入和输出语法

1.5.1 输入
  • 属性名:prompt
    可以接收用户的输入,输入的内容是字符串
1.5.2 输出
  • console.log():在浏览器控制台中输出
    1.影响页面效果
    2.不会阻止浏览器执行

  • document.write():

    1.在页面中输出
    2.会影响页面效果

    3.原理:在拼接 文档流

  • alert():
    1.在页面上弹出框
    2.会阻止浏览器执行,一般慎用

  • prompt():

    1.显示一个对话框,对话框中包含一条文字信息,用来提示用户输入文字,获取的输入内容是字符串

    2.语法:
    在这里插入图片描述

    <body>
    <script>
        document.write(prompt("请输入您的名字"))
        // alert("大胆")
    </script>
    
    • 效果图:弹出对话框,输入原地返回值
      在这里插入图片描述
    1.5.3 案例
    <body>
      <script>
          // - 输出方式:
          // 1.alert(要弹出的内容)
          alert("我是云南的")
          // 缺点:会阻塞文档的解析
          // 2.document.write("要输出的内容")
          //   追加到</body>之前
          document.write("我是广西的");
          //   会解析html标签
          document.write("<br>广西贵港的");
          // 3. console控制台.log日志方法("要输出的内容")
          // - 输入方式:
          console.log(8989)
          // prompt提示("提示文字")
          // 。。。。。。。
      </script>
    </body>
    
  • 效果图:处在一直解析的状态,会阻塞文档的解
    在这里插入图片描述

1.6 结束符

  • 描述:表述语句结束
  • 英文分号 ;分号 ; 可写可不写
  • 换行符(回车)会被识别成结束符 ,所以一个完整的语句,不要手动换行

二、变量

  • 描述:变量是计算机存储数据的“容器”

  • 本质:是程序在内存中申请的一块用来存放数据的小空间

  • 内存:计算机中存储数据的地方,相当于一个大空间

  • 演示:let age = 18 的内部流程:

    1. let age被提升,在内存中得到一个空间,也可以说是age变量指向了这个空间的地址;

    2. age = 18 ; 访问 age,根据这个地址,找到这个空间; 再往空间里存值 18;
      在这里插入图片描述

2.1 声明

	使用let 关键字声明变量
	let 变量名称
	同时声明多个变量: let 变量1,变量2
  let age;

2.2 赋值

	如果声明的变量没有赋值,默认值为undefined
	使用 = 为变量赋值
	变量名 =  值
	可以声明时直接赋值: let 变量名 = 值
age = 18;

2.3 修改

修改就是指重新赋值,下面的覆盖上面的

      age = 18;
      age =20;
  • 效果图
    在这里插入图片描述

2.4 使用

变量可以直接输出,操作

<script>
    let name = "薇薇";
    bzr = "美女"
    document.write(name);
    console.log(bzr);
</script>
  • 效果图
    在这里插入图片描述

2.4.1 案例:输入一次,打印两次

<body>
    <!-- 输两次 -->
    <script>
        let name = prompt("请输入你的名字")
        // prompt(name)
        document.write(name + "<br>")
        document.write(name)
        console.log(name)
    </script>
</body>
  • 效果
    在这里插入图片描述

    2.4.2 案例:数据交换

    <body>
        <script>
            let num1 = 10,
                num2 = 20,
                temp = num1;
            num1 = num2;
            num2 = temp;
            console.log('num1:', num1)
            console.log('num2:', num2)
        </script>
    </body>
    
  • 效果
    在这里插入图片描述

<body>
    <script>
        let name = prompt("请输入你的名字");
        let age = prompt("请输入你的年龄");
        let gender = prompt("请输入你的性别");
        document.write('请输入你的名字:' + name + '<br>' , '请输入你的年龄:' + age + '<br>' , '请输入你的性别:' + gender + '<br>' )
    </script>
  • 效果
    在这里插入图片描述

2.5 命名规则和规范

2.5.1 规范

  • 命名要语义化:通过变量名称可以猜测出变量的作用
  • 驼峰命名:除了第一个单词之外的其它单词的首字母大写

2.5.2 规则

  1. 不要使用关键字做为变量名称
  2. 不要以数字开头
  3. 变量名称中不要包含特殊符号
  4. 除了 _ 数字 字母 $ 之外的都是特殊字符
  5. 严格区分大小写

2.6 扩展

  • let age = 18 ; 实际的执行顺序:
    1. 刚进入js环境(还未开始执行js代码),浏览器会扫描整个顶层,收集所有的 变量声明;
    2. 将收集到的变量声明,提升到最上行,开始执行声明 let age ;(注意还未初始化值)
    3. 然后才开始从上到下逐行执行js代码;
    4. 再次遇到 let age = 18; 实际的执行效果为 age = 18;
  • 引出知识点:
    运行到let age = 18;这一行之前,如果去使用 age ; 会报错
    解锁var语法的缺点1: var未赋值之前也能访问;

三、字符串

带引号的都是字符串
+:在字符串场景中是字符串连接符
模板字符串
简化拼接字符串
可以创建多行文本
标记: ``
变量替换: ${变量}
模板字符串可以创建多行文本,而单引号和双引号只能创建单行文本

四、数据类型

4.1 数据类型

  • JS 数据类型整体分为两大类:
    • 基本数据类型(简单数据类型)(值类型)
      1. number 数字型
      2. string 字符串型
      3. boolean 布尔型
      4. undefined 未定义型
      5. null 空类型
    • 引用数据类型(复杂数据类型)
      1. object 对象
      2. function 函数
      3. array 数组
4.1.1数字型( number )
  • 案例1

    //1. 0开头的数字 
    // 8进制 逢8进1 输出1
      let number = 01; 
    
 let number = 010;
 console.log('number: ', number);
  • 效果图
    在这里插入图片描述
4.1.2字符串型(string)
  • 注意:

    1.引号必须成对使用

     let name ='于晏';
    

    2.单双引号嵌套使用: 必须交替使用

    let name ='我叫"于晏"';
    console.log('name: ', name);
    

    3.\ 进行转义

    let name ="我叫\"于晏\"";
    console.log('name: ', name);
    
  • // \n newLine:换行

  • 注意:只能log使用,document不能使用,它使用的是html语法

console.log("我的年纪是\n19");
  • 效果
    在这里插入图片描述
字符串拼接
  • 案例1

    • 用+号连接
      <body>
        <script>
          // 拼接字符串:  字符串 + 字符串
          let name = prompt("请输入你的名字")
          let age= prompt("请输入你的年龄")
          document.write('大家好,我叫:' + name + "<br>", '今年:' + age + "岁")
        </script>
      </body>
    
  • 效果图
    在这里插入图片描述

  • 案例2

    • 用反引号``拼接(常用)
    • 用${}来优化,使用变量
    • 反引号的换行可以直接用enter回车
  
      // 使用 反引号,来优化
      // ${变量名}
       let name = prompt("请输入你的名字")
      let age= prompt("请输入你的年龄")
      document.write('大家好,我叫:' + name + "<br>", '今年:' + age + "岁" + "<br>")
      // 模板字符串
      document.write(`大家好,我叫${name},今年${age}`)
    </script>
  </body>
  • 效果
    在这里插入图片描述
4.1.3布尔类型(boolean)

表示肯定或否定时在计算机中对应的是布尔类型数据。
它有两个固定的值 true 和 false,表示肯定的数据用 true(真),表示否定的数据用 false(假)
在这里插入图片描述

  • 使用场景:
    后面会学到判断语句: if(answer){ alert(“你答对了”) }
4.1.4未定义类型(undefined)

未定义是比较特殊的类型,只有一个值 undefined。

  • 场景
    只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined。
    在这里插入图片描述
4.1.5null(空类型)
  • null 和 undefined 区别:
    undefined 表示没有赋值
    null 表示赋值了,但是内容为空

  • 变量有赋值,只不过值为 "空

  • 注意事项

      <body>
        <script>
          // 直接输出一个, 未声明,未赋值的变量
          // 错误: notDefined is not defined
    
    
          // 不声明, 只赋值
          // 一定不要这么写
          // 剧透原理:相当于 window.z3 = 123;
          //          给全局对象window添加了一个属性
     
          // 1.声明变量
          let age;
          // 2. 赋值:=  右边赋值给左边
          age = 18;
          age =20;
          // 3. 使用
          document.write(prompt("请输入你的年龄"))
          console.log(age)
          // 4.连写
          // let age = 18;
        </script>
      </body>
    

4.2 数据类型的检测

4.2.1 检测类型 typeof
  1. typeof 123:number
  2. typeof ‘123’:string
  3. typeod true:boolean
  4. typeof undefined:undefined
  5. typeof null:object
4.2.2 通过控制台的 字体颜色检测
  • 蓝色:布尔、数字

  • 灰色:字符串、未定义、空

4.2.3 使用 typeof 关键字,来检测变量类型
     let age = 18;
      console.log(' age: ',  age);

      let userName = "陈";
      console.log('userName: ', userName);
  
      let money = null;
      console.log('money: ', typeof money);

      let color
      console.log('color: ', color);
    </script>
  </body>
  • 效果图
    在这里插入图片描述

4.3 数据转换

4.3.1 隐式转换
  • 描述:某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。

  • 规则:

    • 号两边只要有一个是字符串,都会把另外一个转成字符串
    • 除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型
  • 缺点:转换类型不明确,靠经验才能总结

  • 优点:代码简洁

  • 技巧:+号作为正号解析可以转换成Number

    console.log(+"11" + 11);
    
  • 字符串转换为数值
    +num
    -num
    num * 1

  • 数值转换为字符串
    (num + ‘’)
    String(num)
    num.toString()

   <script>
      // 隐式转化: 系统内部自动的进行类型转化
      // 1. 加号(+) 左右,只要有一个字符串,就吧另外一个值转化为字符串
       console.log("123" + 1)
       console.log(1 + "123")
      // 2. 除了+号之外的,算数运算符;会吧数据转化为数字
      console.log('4' - 2)
      console.log('4' * 2)
      console.log('4' / 2)
      // 3. +号 可以作为正号解析转化成数字
      console.log(+'123') 
    </script>
  • 效果图
    在这里插入图片描述

4.3.1 显式转换

  • Number(变量):将变量转换为数值
    如果有非数值,返回NaN
  • String(变量):将变量转换为字符串
  • parseInt(变量):将变量转换为整数
    1.如果有非数值就进行转换,直到碰到非数值为止
    2.如果第一个就是非数值,就返回NaN
  • parseFloat(变量):
    将数值字符串转换为数值,保留小数
  • 案例
    1. Number(数据)
      • 注意:是大写开头
    console.log(Number("2334"));   
//  1.1 当数据不能转化为数字的时候,会返回 NaN
 //   1.2 NaN 是一个数字类型
     console.log(Number("fffffff"));
  1. parseInt(数据)
    • 作用: 解析为 整数
    • 不会 四舍五入
       console.log(parseInt("1.53"));
       console.log(parseInt("(1.53f"));
      //  解析为NaN 
       console.log(parseInt("(fsf1"));
  1. parseFloat(数据)
    • 作用: 可以保留小数
  • 不会 四舍五入
     console.log(parseInt("(1.53f"));
       console.log(parseInt("(1.53fa"));
      //  NaN 
       console.log(parseInt("(f1.3424"));
  • 效果图
    在这里插入图片描述

  • 变量.toString(进制)

    <script>
      //       String(数据)
      // 变量.toString(进制)
       //   2. 变量.toString(进制)   ;  进制不写,默认为十进制
      //   需要一个变量
      //   数字.toString() 会报错
      console.log("-----------  String(数据)-----------------");
      console.log(String(123));
      console.log(String(true));
      console.log(String("str"));
      console.log(String(undefined));
      console.log(String(null));
      console.log("-------------变量.toString(进制)---------------");
      let a = 123;
      console.log(a.toString());
      a = true;
      console.log(a.toString());
      a = undefined;
      console.log(a.toString());
      a = null;
      console.log(a.toString());
    </script>
  • 效果
    在这里插入图片描述

五、实战案例

    <style>
      table {
        border: 1px solid #222;
        width: 800px;

        margin: 100px auto;
        border-collapse: collapse;
      }

      table > caption {
        font-weight: 700;
        padding: 5px;
      }

      table td,
      th {
        border: 1px solid #222;
        text-align: center;
        padding: 10px 5px;
        font-size: 12px;
      }
    </style>
  </head>

  <body>
    <script>
      // 1. 输入4个数据
      let name1 = prompt("请输入第一个商品")
      let price1 = prompt("请输入第一个商品价格")
      let name2 = prompt("请输入第二个商品")
      let price2 = prompt("请输入第二个商品价格")

      // document.write()只能将字符串拼接到 </body> 之前;
      // 目前我们还没学习,如何在任意html标签位置中插入新html;
      // 所以只能打印完整的html字符串;
      
      // 2.根据数据生成对应的表格结构
      let tableStr = `<table>
                        <caption>
                          订单付款确认界面
                        </caption>
                        <thead>
                        <tr>
                          <th>商品1名称</th>
                          <th>商品1价格</th>
                          <th>商品2名称</th>
                          <th>商品2价格</th>
                          <th>总价</th>
                        </tr>
                        </thead>
                        <tbody>
                        <tr>
                          <td>${name1}</td>
                          <td>${price1}</td>
                          <td>${name2}</td>
                          <td>${price2}</td>
                          <td>${+price1 + +price2}</td>
                        </tr>
                        </tbody>
                      </table>`;

      //   打印表格
      document.write(tableStr)
    </script>
  </body>
  • 效果图
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值