js初体验

91 阅读4分钟

JS 初体验

JS 的组成

  1. ECMAScript 定义了js的语法规范,描述了语言的基本语法和数据类型

  2. Dom 文档对象模型 由HTML提供 每一个 html 标签都是一个Dom

  3. Bom 浏览器对象模型, 由 浏览器 提供的 可以实现页面的跳转

js 的书写方式

外部样式:

外部样式与css内部的引入类似, 只不过需要写一个外部的 .js 文件, 然后通过 script 的 src 属性, 引入进来工作时常用 (需要创建一个js文件用于存储js代码)

<script src="1.js"></script>
    // 在改js文件钟书写就是代码
 console.log(132);

内部样式(常用):
直接在 body 标签末尾 书写一个标签 script在这个标签内部, 就能书写 JS 代码

<script>
    // JS 代码书写在 这个标签就行了
    // 在控制台, 会有一个 打印, 打印的内容为 '你好 2301'
    console.log(132);    
</script>

内联(行内)样式: (了解就行, 后续不要这样去写)

<a href="javascript:concole.log(123);">
 
<div onclick ="console.log('123456')">123456</div>

js中的变量

简单的说: JS 的变量 是 计算机中 存储数据的 标识符 我们如果有数据, 不会直接放到 "手里边", 而是会存到某一个地方, 这个地方就是 变量 后续我们如果想用这个数据, 那么直接通过这个变量就行了

认识变量

如何 创建/定义 一个变量

  • 语法: var 变量名
  • 变量名, 通常是字母组成的, 一般没有人用拼音
  • 定义变量后, 变量内部的值, 默认为 undefined(未定义)

如何 给 定义的变量 赋值

  • 定义好的变量名 = 你想存到这个变量内部的 值
  • 注意: JS 中一个等号, 叫做 赋值号

JS 中 分号的含义

  • 代表当前这一行代码 结束 (可写, 可不写, 推荐 不写)(建议书写,后续如果在严格模式下会显示结果或者可能报错)

JS 的空格

  • 如果是 关键字后边(var) JS 语法规范要求必须加
  • 如果是在 符号 的两边, 可加可不加,(建议书写,后续如果在严格模式下会显示结果或者可能报错)
// 定义一个变量
        var num;
        console.log(num);

        // 给定义的变量 赋值
        num = 100;
        console.log(num);

        // 将前两步, 结合
        var num1 = 100;  // 定义一个变量, 名为 num1, 并赋值为 999
        console.log(num1);

阶段小练习(考考你)

// 交换两个变量的值  


 var num1 = 100
        var num2 = 200

        // num1 = num2  // 此时这行代码执行完毕, 原本 num1 的值, 就已经失去了
        // num2 = num1

        // 借助第三个变量实现交换
        var num3 = num1 // 将原本 num1 内部存储的值, 保存在这个 num3 中
        num1 = num2
        num2 = num3

        console.log(num1)
        console.log(num2)

检测一下学的成果(练习上文)

/*
           需求:
          num1 内部的值为 200
          num2 内部的值为 100
*/

变量 的命名规范

  1. 命名规范 (建议遵守, 不遵守也不报错)
  • 命名是要求 见名知意*

  • 采用驼峰命名 (多个单词拼接时, 第二个单词开始的首字母大写)*

​2. 命名规则 (强制要求, 必须遵守, 否则报错)

  • 由 字母 数字 下划线 $(英文) 组成, 并且, 不能以 数字 开头

  • 字母 是区分大小写的

  • 不能是关键字或者保留字

    • 关键字 var, let, const, if, function

    • 保留字, 现在在 JS 中没用, 但是在将来的某个版本, JS需要使用 promise, async, await

        // var a = 1
        // var bigbox = 100
        // var bigBox = 100

        var num1 = 100
        // var 1num = 200

        console.log(NUM1)

js 的数据类型

  • JS 的 基本数据类型 (简单数据类型)

             1. Number 类型
                 不区分整数, 浮点数, 特殊值
                 整数小数都可以算作 Number,  特殊值 NaN 
                     (如果一个值是 Number 类型, 但是不能用常规数字来表达, 那么就会用 NaN 来代替)
             2. String 类型
                 在 JS 中, 只要是 引号包裹起来的内容, 就是 String
             3. undefined 类型
                 未定义
                 undefined 本身就是一种数据类型, 并且 变量 在定义但是没有赋值的时候, 默认的值就是 undefined
             4. Boolean 类型
                只代表两个意思, 真/假   正确/错误
                    truefalse5. null 类型
                空  空对象
                null 本身就是一种数据类型
    
        // 1.Number
        var num = 2301

        // 2. String
        var str1 = '你好'
        var str2 = "2301"

        // 3. undefined
        var un1 = undefined
        var un2

        // 4. Boolean
        var bo1 = true
        var bo2 = false

        // 5. null
        var nu = null

js数据类型的检测

  • JS 的数据类型检测 变量的类型没有一个固定值

    语法: 
        typeof 要检测的变量名
        typeof(要检测的变量名)
      
        typeof 的缺点:
           只能用来检测基本数据类型, 并且在检测 null 的时候, 返回的不是 null 而是一个 object
      
       后续会有其他方法用来检测数据类型
      
       面试题: typeof 能检测数据类型吗? 能检测什么类型的数据? 检测 null 的时候 会返回什么 
    
var num = 2301
        var str2 = "2301"
        var un1 = undefined
        var bo1 = true
        var nu = null

        console.log(typeof num) // 将 变量 num 值 的类型 打印到控制台
        console.log(typeof(str2))   // 将变量 str2 值的类型 打印到控制台
        console.log(typeof(un1))
        console.log(typeof(bo1))

        console.log(typeof(nu)) // 将变量 nu 值的类型, 打印到控制台

数据类型的相互转换

  • 其他数据类型转换为 数字类型

      1. Number(数据)
          Number 会将传入的 '数据' 处理为 number 类型后 返回 
                  字符串: 纯数字转为对应的数字
                         空字符串和空白字符串 都转换为 0
                         非空非纯数字字符串转换为 NaN
                  布尔值: true 转为 1; false 转为 0
                  undefined: 转为 NaN
                  null: 转为 0
        
      2. parseInt()   
          字符串转整数的方法
                  浮点数: 直接做 取整操作
                  字符串: 将字符串转为 整数数字, 并且包含取整操作
                             如果字符串后续有字母或者非数字的内容, 那么直接保留开头的数字, 忽略后续内容
                             如果字符串开头为 非数字, 直接转为 NaN
                  布尔值: undefined, null 都会转为 NaN
        
      3. parseFloat() 
                  字符串转为 浮点数(小数)
                  转换规则与 parseInt 类似, 但是没有取整 
        
      4. 我个人在开发的时候 喜欢使用的一种方式(★建议运用一下我的方法)
                 console.log(原本的数据 - 0)
    

    小任务: 自己整理 第四种方式的转换规则

  • 当转换为数值类型时

    // 当转换为数值类型时
    var num = Number('2301')
         console.log(num)// 2301
         console.log(Number('2301')) // 2301
         console.log(Number('2301qwer')) // NaN
         console.log(Number('')) // 0
         console.log(Number(' ')) // 0
         console.log(Number('@#$')) // NaN
         console.log(Number(true))   // 1
         console.log(Number(false))  // 0
         console.log(Number(undefined))  // NaN
         console.log(Number(null))   // 0
    // 当转化为(浮点数)小数 时
         console.log(parseInt(100.1))    // 100
         console.log(parseInt(100.1))    // 100
         console.log(parseInt('100.1qwert'))    // 100
         console.log(parseInt('100qwert'))    // 100
         console.log(parseInt('qwert100'))    // NaN
         console.log(parseInt('@#$%'))    // NaN
         console.log(parseInt(''))    // NaN
         console.log(parseInt(' '))    // NaN
         console.log(parseInt(true)) // NaN
         console.log(parseInt(false))    // NaN
         console.log(parseInt(undefined))    // NaN
         console.log(parseInt(null)) // Na
        // 当转化为(浮点数)小数 时
         console.log(parseFloat(100.1))    // 100.1
         console.log(parseFloat('100.1'))    // 100.1
        
        // 我的方法:
        console.log('2301' - 0)
        console.log('2301qwe' - 0)
        console.log(true - 0)
        console.log(undefined - 0)
    
  • 其他类型转 字符串类型

             1. 变量.toString();
                     注意: undefinednull 不能使用
        
             2. String(要转换成字符串的数据或者变量名);
        
             3. 我个人在开发的时候常用的一个方法
                     要转换为字符串的数据/变量名 + '';
    
        var num = 100
        console.log(typeof(num.toString())) // 将 num 的值转为 字符串类型
        var bo1 = true
        var bo2 = 'true'
        console.log(bo1.toString())
        var un = undefined
        var nu = null
        console.log(un.toString())
        console.log(nu.toString())
        console.log(String(100))    // '100'
        console.log(String(true))   // 'true'
        console.log(String(false))  // 'false'
        console.log(String(undefined))  // undefined
        console.log(String(null))  // null

        
        console.log(100 + '') // '100'
        console.log(undefined + '') //'undefined'
        console.log(null + '')      // 'null'

其他数据类型转布尔类型

  • Boolean(要转换的数据/变量名) 能够将任何数据类型, 转换为 布尔类型 转为 false: NaN, 0, '', null, undefined

          转为 true:
              非 0/NaN 的数字
              非空字符串
        
          我个人在开发中常用的一种方式
                      !!要转换的数据/变量名
    
// 转为 false:
        console.log(Boolean(NaN))
        console.log(Boolean(0))
        console.log(Boolean(''))
        console.log(Boolean(null))
        console.log(Boolean(undefined))

        // 转为 true:
        console.log(Boolean(1))
        console.log(Boolean(-1))
        console.log(Boolean(999))
        console.log(Boolean(999.999))
        console.log(Boolean(' '))
        console.log(Boolean('12345qwert#$%^&'))

        // 我的方法
        console.log(!!100)
        console.log(!!'')           

JS 的算数运算符

// 称为 表达式, 每一个表达式, 都会得到一个结果, 然后用这个结果参与周围程序
         
// + - * / %
// 例如 :
   console.log(5 + 6);
   console.log(11);

重点

// 算数运算符中, + 具有特殊的地方
//    正常 符号两边如果都是 数字类型, 那么会求和然后参与周围程序
//    如果符号两边 任意一个位置 出现了 字符串, 那么会运行拼接
          
// 5 + '6' ->  拼接后的值: '56'
          
// 符号的运算顺序
//     先乘除取余, 后加减, 如果有 小括号, 那么先运算小括号
//      JS 中 中括号, 和大括号, 有特殊含义

代码解析

        console.log(5 + 6)  // 11
        console.log(4 - 1)  // 3
        console.log(2 * 3)  // 6
        console.log(9 / 3)  // 3
        console.log(9 % 3)  // 0


        console.log(5 + 6)  // 11
        console.log(5 + '6')  // '56'
        console.log(5 + 'qwer')  // '5qwer'

        console.log(4 - 1)  // 3
        console.log(4 - '1')  // 3
        console.log('4' - 'qwe')  // NaN
        console.log('4' - true)  // 3
        console.log('4' - false)  // 4
        console.log(5 * '3')     // 15
        console.log('5' * 'qwe') // NaN

作业:

// 1. var num = 3 - '36' % 5 + '2' - 2
// 2. 不考虑四舍五入 将一个数字进行保留两位小数 (提示:parseInt);