初识JS、变量以及数据类型转换

121 阅读5分钟

初识JS

1.JS介绍

1.1什么是JS

  1. 什么是JS?

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

  2. JS有什么作用?

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

    • ECMAScript:规定了js基础语法核心知识。比如:变量、分支语句、循环语句、对象等等
    • Web APIs :
      • DOM 操作文档,比如对页面元素进行移动、大小、添加删除等操作
      • BOM 操作浏览器,比如页面弹窗,检测窗口宽度、存储数据到浏览器等等
      • 注意 DOM属于BOM

1648024491133.png

1.2JS的书写位置

  1. 内联 JavaScript

    • 代码写在标签内部

    • 这种用法不太推荐,了解即可

    • <!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>js书写位置</title>
      </head>
      
      <body>
          <button onclick="alert('hello girs')">点击 </button>
          <!-- <script>
              alert('hello world')
          </script> -->
      </body>
      
      </html>
      
  2. 内部 JavaScript

    • 直接写在html文件里,用script标签包住

    • 规范:script标签写在上面

    • tips:我们将 。 如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。 因此,将 JavaScript 代码放在 HTML页面的底部附近通常是最好的策略

    • <!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>js书写位置</title>
      </head>
      
      <body>
          <script>
              alert('hello world')
          </script>
      </body>
      
      </html>
      
  3. 外部 JavaScript

    • 代码写在以.js结尾的文件里

    • 语法:通过script标签,引入到html页面中。

    • tips:1. script标签中间无需写代码,否则会被忽略!

      1. 外部JavaScript会使代码更加有序,更易于复用,且没有了脚本的混合,HTML 也会更加易读,因此这是个好的习惯。
    • <!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>外部书写JS</title>
      </head>
      
      <body>
          <script src="./02-js外部文件.js"></script>
      </body>
      
      </html>
      

1.3JS注释

JS注释分为多行注释跟单行注释

  1. 多行注释:ctrl + /

  2. 单行注释:系统默认为 shift + alt + a

1.4结束符

  1. 作用:代表语句结束(英文分号";")

  2. 可写可不写,都可以运行(现在不写结束符的程序员越来越多)

1648122133143.png

  1. 换行符(回车)会被识别成结束符 ,所以一个完整的语句,不要手动换行

  2. 是否要写结束符,根据团队的要求而定。

1.5JS的输入输出语法

学习目标:能写出常见 JavaScript 输入输出语法

  1. 什么是语法:

    • 人和计算机打交道的规则约定
    • 我们要按照这个规则去写
    • 我们程序员需要操控计算机,需要计算机能看懂
  2. 常见的3种输出语法:

    输出和输入也可理解为人和计算机的交互,用户通过键盘、鼠标等向计算机输入信息,计算机处理后再展示结果给用户,这便是一次输入和输出的过程。

    • document.write('要输出的内容')

    向body内输出内容

    如果输出的内容写的是标签,也会被解析成网页元素

    语法:

    <body>
        <script>
            document.write('要输出的内容')
        </script>
    </body>
    
    • alert('要输出的内容')

    页面弹出警告对话框

    语法:

    <body>
        <script>
            alert('要输出的内容')
        </script>
    </body>
    
    • ​ console.log('控制台打印')

      控制台输出语法,程序员调试使用,这是我们开发人员最常用

      语法:

      <body>
          <script>
              document.write('要输出的内容')
          </script>
      </body>
      
  3. 常见的输入方法:

    • prompt(''):弹出一个对话框,收集用户输入的信息

2.变量

1.什么是变量

变量是计算机存储数据的“容器”,就是一个装东西的盒子。是计算机中用来存储数据的“容器”,它可以让计算机变得有记忆。

1648170926803.png

2.变量的作用

用来存放数据的。注意变量指的是容器而不是数据。

3.变量的基本使用

3.1 声明变量:要想使用变量,首先要创建变量(专业说法: 声明变量)

1648171246096.png

声明变量有两部分构成:声明关键字、变量名(标识);

语法:

    <script>
        //定义变量
        // let  变量名 = 数值
        let myname = '阿良'
    </script>

​ let 即关键字 (let: 允许、许可、让、要),所谓关键字是系统提供 的专门用来声明(定义)变量的词语

​ 3.2变量赋值:定义变量后,就可以给它进行赋值,在变量名之 后跟上一个“=”,然后是数值

1648171999109.png

    <script>
        let myname; // 声明变量 我的名字
        myname = '阿良';//变量赋值
        console.log(myname);//变量的使用

        let height; // 声明变量 身高
        height = '180';//变量赋值
        console.log(height);//变量的使用

        let weight; // 声明变量 我的名字
        weight = '60kg';//变量赋值
        console.log(weight);//变量的使用
    </script>
</body>

​ 3.3更新变量:变量赋值后,还可以通过简单地给它一个不同的 值来更新它。(之前的数据会被覆盖)

1648172164665.png

    <script>
        //定义变量
        // let  变量名 = 数值
        let age = 18
        age = 17
        console.log(age); // 输出age = 17
    </script>

​ 3.4 let不允许多次声明一个变量:会报错

    <script>
        //定义变量
        // let  变量名 = 数值
        let age = 18
        let age = 17
        console.log(age); 
        // 两次声明了同一个变量 系统直接报错
    </script>

4.声明多个变量

1648172478925.png

语法:声明多个变量之时,使用“,” 隔开;输出的时候也使用“,”隔开即可

    <script>
        //声明多个变量
        let myname = '阿良', age = 18, adress = '中华人民共和国'
        console.log(myname, age, adress);
    </script>

5.变量练习

1648173209821.png

语法:

    <script>
        let username = '张三', number = 20
        console.log(username, number);
        //输出:张三 20
    </script>

练习2:变量练习进阶版:变量值的交换

1648174055333.png

语法:

    <script>
        // 交换变量的数值:相当于左手换右手
        // 需要创建一个临时变量num0,作为中转站 
        //下先将num1 的值交换给num0,再将num2的值交换给num1,最终将临时变量num0中的值交还给num2
        //感觉本质上还是可以看作是重新给变量进行赋值
        let num1 = 10, num2 = 20, num0
        num0 = num1, num1 = num2, num2 = num0
        console.log(num1, num2);
    </script>

6.变量的规则和规范

规则:必须遵守,不遵守报错

规范:建议,不遵守不会报错,但不符合业内通识

6.1规则

  1. 不能用关键字

    关键字:有特殊含义的字符,JavaScript 内置的一些英语词汇。例如:let、var、if、for等

  2. 只能用下划线、字母、数字、$组成,且数字不能开头

  3. 字母严格区分大小写,如 Age 和 age 是不同的变量

1648176656678.png

    <script>
        // 1.建一个变量,名字为 let , var  if for 等为内置关键词 都不能使用
        // let for = 123  系统直接报错


        // 2. 可以使用下划线,$符号 数字跟字母
        let _str = '123' //下划线开头
        console.log(_str);

        let $str1 = '123' //$开头
        console.log($str1);

        let str = '123' //字母开头
        console.log(str);

        // let 123str = '123' //数字开头  会报错
        // console.log(123str);
    </script>

6.2规范

  1. 起名要有意义
  2. 遵守小驼峰命名法:第一个单词首字母小写,后面每个单词首字母大写。例:userName
    <script>
        let userName = '阿良'
    </script>

6.3 命名规范练习

    <script>
        let userName = prompt('请输入您的姓名:')
        let userAge = prompt('请输入您的年龄:')
        let userSex = prompt('请输入您的性别:')
        // document.write = userName
        // document.write = userAge
        // document.write = userSex
        console.log(userName, userAge, userSex);
    </script>

3.数据类型

为什么要给数据进行分类呢?

更加充分和高效的利用内存;也更加方便程序员的使用数据

3.1数据类型

3.1.1基本数据类型

控制台语句经常用于测试结果来使用。

可以看出数字型和布尔型颜色为蓝色,字符串和undefined颜色为灰色

1648177897929.png

    <script>
        // 1.数字类型运算
        // 注意:数字添加了引号的就不是数字类型了,是字符串类型
        let num1 = 22, num2 = '11'
        console.log(num1 + num2); // 输出为2211,为字符串类型
        let num = 22, num3 = 11
        console.log(num + num3); // 输出为33


        // 2.字符串拼接
        let str = '迪迦超人', str1 = '是光的化身'
        // 文字加文字
        console.log(str + str1);  //迪迦超人是光的化身
        // 文字加数字
        let num4 = 12
        console.log(str + num4);  //输出为 迪迦超人12 字符串
    </script>
数字型number
  • 什么是数值型?

    即我们数学中学习到的数字,可以是整数、小数、正数、负数。JavaScript 中的正数、负数、小数等 统一称为 数字类型

1648192686468.png

字符串型string
  • 什么是字符串型?

    通过单引号( '') 、双引号( "")或反引号( ` )包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。

1648192745933.png

  • 注意事项:

    1. 无论单引号或是双引号必须成对使用
    2. 单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
    3. 必要时可以使用转义符 \,输出单引号或双引号
  • 字符串拼接

1648192842886.png

  1. 作用:拼接字符串和变量,在没有它之前,要拼接变量比较麻烦

1648192906358.png

  1. 符号:``,变量用包裹{}包裹→{变量名}

1648193004259.png

 语法:

 ```js
     <script>
         // 首先要先声明变量
         let myname = '阿良', age = 18
         document.write(`大家好,我叫${myname},今年${age}岁了`)
 		//这种拼接方式相比之前的“+”要更利于阅读查看
     </script>
 ```

 
布尔型boolean
  • 示肯定或否定时在计算机中对应的是布尔类型数据。
  • 它有两个固定的值 true 和 false,表示肯定的数据用 true(真),表示否定的数据用 false(假)。
未定义型undefined
  • 未定义是比较特殊的类型,只有一个值 undefined。

  • 什么情况出现未定义类型?

    只声明变量,不赋值的情况下,变量的默认值为 undefined,一般很少【直接】为某个变量赋值为 undefined。

1648193506462.png

语法:

    <script>
        let age
        console.log(age);   //系统输出为undefined
    </script>
  • 工作中的使用场景:

    我们开发中经常声明一个变量,等待传送过来的数据。
    如果我们不知道这个数据是否传递过来,此时我们可以通过检测这个变量是不是undefined,就判断用户是否有数据传递过来。

  • 总结

1648193738149.png

空类型null
  • null 表示 值为 空

  • null 和 undefined 区别:

    1. undefined 表示没有赋值
    2. null 表示赋值了,但是内容为空
  • null 开发中的使用场景:

    将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个null (知道这里是要放变量,但没准备好数值,先拿个空的占着位置)

3.1.2引用数据类型

暂不做过多介绍

1648177914844.png

3.2检测数据类型(typeof)

通过 typeof 关键字检测数据类型

语法:

    <script>
        //定义变量
        let num = 123, str = 'aliang', num2 = '12', myname = true, num3 = 2.3213, str2
		//控制台输出变量
        console.log(typeof (num));
        console.log(typeof str);
        console.log(typeof num2);
        console.log(typeof myname);
        console.log(typeof num3);
        console.log(typeof str2);
    </script>

语法输出的结果:

1648193840587.png

4.数据类型转换

  1. 首先要知道我们为什么需要进行类型转换?

    因为JavaScript是弱数据类型: JavaScript也不知道变量到底属于那种数据类型,只有赋值了才清楚。 使用表单、prompt 获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算。

  2. 就是把一种数据类型的变量转换成我们需要的数据类型。

  3. 转换数据类型分为隐式转换跟显示转换

4.1隐式转换

  1. 什么是隐式转换呢?

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

  2. 它有什么规则呢?

    • “+” 号两边只要有一个是字符串,都会把另外一个转成字符串

    • 除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型

1648124426057.png

 对应输出的类型:**蓝色的是数字型,黑色的是字符串型**

1648124673725.png

  1. 缺点:转换类型不明确,靠经验才能总结

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

    	<script>
           //在字符前面加“+” 可以将数据类型转变成数字类型
            console.log(typeof +'12');
        </script>
    	//文字也是一样,输出的数据类型为number
        <script>
            console.log(typeof +'abcd');
        </script>
    
  3. 工作中推荐的写法:

        <script>
            let num1 = '12'
            let num2 = +num1
            console.log(typeof num2); //控制台打印为number
        </script>
    

4.2简易计算器之隐式转换

使用隐式转换的“ + ”号巧妙地将字符串转换成数字类型。

要求:输入两个数字,最终打印出两个数字的和

其中使用的技巧为:+号作为正号解析可以转换成Number

语法:

    <script>
        // 先定义两个变量num1 跟 num2 
        // +号作为正号解析可以转换成Number,可以巧妙地将字符串转换成数字类型
        var num1 = + prompt('请输入第一个数字')
        // 直接在前面添加“+”
        var num2 = + prompt('请输入第二个数字'), num3 = num1 + num2

        alert(`两个数字的总和为:${num3}`) // 得到的数字为两个值之和
    </script>

4.3显式转换

  1. 什么是显示转换:

    自己写代码告诉系统该转成什么类型

  2. 为什么需要显示转换

    编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。 为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。

4.4转化为字符型String

  1. 将数字型转化成字符串:、

    前两种使用的较少,第三种方式也叫做隐式转换,是我们常用的。

1648123659401.png

语法:

    <script>
        // 第一种转换方法   变量.toString()
        var num = 12
        var str = num.toString()
        console.log(str);
    </script>
    <script>
        // 第二章转换方法  String(变量)
        var age = 18
        console.log(String(age));
    </script>
    <script>
        // 第三种转换方法 + 字符拼接的方式 也叫隐式转换
        console.log(12 + '');
    </script>

4.5转化为数字型Number(重点)

转化为数值型的方式有四种,分别是

  • parseInt('')————只保留整数
  • parseFloat('')————可以保留小数
  • 利用Number()进行转换 ————Number(变量)
  • 隐式转换(- * /)————利用算数运算隐式转换成数值型(在变量的最前方添加“+” 可直接转换为数字型)

1648125754139.png

  1. parseInt('')转换的方法:parseInt()

        <script>
            // 1.age 是用户输入的年龄是字符串类型,通过parseInt()转换成数字型
            var age = prompt('请输入您的年龄')
            console.log(parseInt(age));
            // 2.parseInt()会将数字转换成整数,小数部分会被直接截除
            console.log(parseInt('18'));
            console.log(parseInt('3.14'));
        </script>
    
  2. parseFloat('')转换的方法:(parseFloat('')

    • 可以将字符转换成小数
    • 遇到字母或者汉字时,会停止识别,只展示出前面的数字
        <script>
            // 1.parseFloat() 可以将字符型转换成数字型  得到小数
            console.log(parseFloat('3.14'));
            // 如果其中是整数,输出的任是整数,不会主动添加小数点
            console.log(parseFloat('10'));
    
            // 2.(parseFloat('') 可以主动去掉最后方的单位,比如px
            console.log(parseFloat('120px'));
            // parseFloat()遇到字母或者是汉字的时候会停止识别后续的字符,只会显示前面的数字
            console.log(parseFloat('12abc'));
            console.log(parseFloat('12汉字'));
        </script>
    
  3. Number转换:Number()

    语法:

        <script>
            // 3.利用unmber进行转换
            var str = '12'
            console.log(Number(str));
            console.log(Number('32'));
        </script>
    
  4. js隐式转换(- * /):

    在我们进行数算运算的时候,JS自动转换了数据类型

    实验代码:

    <script>
            // 4.隐式转换(- * /)  进行算数运算时系统会自动转换成数字型
            // 减号
            console.log('121' - 120);   //1   成功转换成数字型
            console.log('12' - '11');  //1   成功转换成数字型
            //加号
            console.log('121' + 11);   //12311   这个是属于字符串拼接,得到的是字符串
            console.log('121' + '11');   //12311   
    
            //乘号
            console.log('121' * 2);  //242  成功转换成数字型
            console.log('121' * '2');  //242  成功转换成数字型
            // 除号
            console.log('120' / 2);  //60  成功转换成数字型
            console.log('120' / '2');  //60  成功转换成数字型
            //对中文或者字母进行运算。会得到NAN,不是数字的提示
            console.log('120' / 'hello');  //NAN
            console.log('120' / '你好');  //NAN
    
        </script>
    
  5. 如果字符串内容里有非数字,转换失败时结果为 NaN(Not a Number)即不是一个数字

        <script>
            //对中文或者字母进行运算。会得到NAN,不是数字的提示
            console.log('120' / 'hello');  //NAN
            console.log('120' / '你好');  //NAN
        </script>
    
  6. NaN也是number类型的数据,代表非数字

  7. 练习:输入2个数,计算两者的和,打印到页面中

    <!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>案例</title>
    </head>
    
    <body>
    
        <script>
            var number1 = prompt('请输入第一个数字')
            var number2 = prompt('请输入第二个数字')
            // 1.利用number(),强制将字符串转换成数字
            // var sum = Number(number1) + Number(number2)
            // 2.使用parseFloat() 转换成数字类型
            // var sum = parseFloat(number1) + parseFloat(number2)
            // 3.使用parseInt() 转换成数字类型
            var sum = parseInt(number1) + parseInt(number2)
            alert('两数的总和为:' + sum)
        </script>
    </body>
    
    </html>
    
  8. 总结:使用四种方式将数据类型转换为数字型

        <script>
            let str = '123'
            // 1.使用Number() 的方式强势将字符转换成数字
            let num1 = Number(str)
            console.log(typeof num1);
            // 如果不是数字,是文字或者字母,使用Number转换会如何呢?
            let str1 = 'abc中文'
            console.log(Number(str1));  //控制中心打印出为:NaN 不是个数字
    
            //2.使用parseInt() 转换为数字型  转换成整数
            let age = '123', age1 = '3.14'
            console.log(parseInt(age));  //123
            console.log(parseInt(age1));  //3 
            console.log(typeof parseInt(age)); //检测的数据类型为number
            //3.使用parseFloat()转换
            let num4 = '3.1415'
            console.log(parseFloat(num4));   //3.1415
            //4.使用“+”转换
            let num5 = +str
            console.log(num5); //123
            console.log(typeof num5); //number
        </script>