js的基础知识

1. JS 的三大组成部分
      1-1. DOM - Document Object Model 文档对象模型
         一整套操作页面元素的属性和方法
      1-2. BOM - Browser Object Model 浏览器对象模型
        一整套操作浏览器相关内容的属性和方法
      1-3. ECMAScript
         js 的语法
       核心: 使用 ECMAScript 的语法去操作 DOM 和 BOM 发生变化

    2. JS 的三种引入方式
      2-1. 行内式(墙裂不推荐)
        a 标签
           直接书写在 href 属性值的位置, 书写一个 javascript: 一段js代码 ;
        非 a 标签
           需要一个行为属性来执行 js 代码
          示例(onclick), <div οnclick="js代码"></div>
      2-2. 内嵌式(不推荐)
         在当前页面书写一个 script 标签, 把 js 代码直接书写在 script 标签内
         打开浏览器的时候, 会直接执行 script 标签内的 js 代码, 不需要任何行为
       script 标签可以书写在页面任意位置, 推荐书写在 head 的末尾或者 body 的末尾
          目前我们建议书写在 body 的末尾
        一个页面可以书写多个 script 标签, 会按照从上到下的顺序依次执行每一个标签内的 js 代码
      2-3. 外链式(推荐)
         把 js 代码书写在一个 .js 后缀的文件内
         在当前页面使用 script 标签的 src 属性引入
         注意: 当一个script 标签被当做外链式引入 js 代码以后, 不能在当做内嵌式使用, 写在标签对内的代码没有意义
         script 标签可以书写在页面任意位置, 推荐书写在 head 的末尾或者 body 的末尾
         目前我们建议书写在 body 的末尾
         一个页面可以书写多个 script 标签, 会按照从上到下的顺序依次执行每一个标签内的 js 代码

    3. 常用的三种输出方式
      3-1. alert()   弹出层
      3-2. console.log()   控制台打印
      3-3. document.write()   页面输出
      书写: () 内书写的内容
         如果书写纯数字, 可以不写引号, 因为就是数字输出
         如果带有其他内容, 必须要书写引号, 因为表示单纯的文本输出
         如果没有引号, 表示变量输出
      示例:
         alert(123456)
         console.log('hello')
        document.write(hello)
           输出的当前内存中 hello 这个变量保存的值
           如果没有 hello 这个变量, 就报错 xxx is not defined

    4. 定义变量
       语法: var 变量名 = 值
         var 定义变量关键字
         变量名  你自己起的名字
         等于号(=)  赋值符号
         值   该变量内存储的内容
      几种形式
        => var n
        => var n = 10
        => var n, m, x, y
        => var n, m = 100, x = 200, y

    5. 变量名的命名规则和规范
       规则: 你必须遵守, 不遵守就是错的
        1. 变量名只能由 数字(0-9) 字母(a-zA-Z) 下换线(_) 美元符($) 组成
        2. 变量名不能由 数字开头
        3. 变量严格区分大小写
        4. 不能使用关键字和保留字
          => 关键字: js 语法中正在使用的关键字 var id for ...
          => 保留字: js 语法将来可能会用到的关键字
      规范: 建议你遵守
        1. 变量语义化
        2. 驼峰命名法
          => 大驼峰: 第二个单词开始首字母大写 userName userEmail
          => 小驼峰: 第二个单词开始中间使用下划线连接 user_name user_email
        3. 不要用中文

    6. 数据类型分类
      6-1. 基本数据类型
        => Number 数值
           整数
          浮点数(小数)
          科学计数法  10e5
          其他进制表示的数值
            + 0b  二进制
            + 0x  十六进制
            + 0o  八进制
       =>String 字符串
           单引号或者双引号包裹的就是字符串
           模板字符串 反引号(``)
       => Boolean 布尔
          true
           false
       => Undefined 空
          -> undefined
          -> 表示定义没有赋值
       => Null 空
          -> null
          -> 表示有值, 有一个空值
      6-2. 复杂数据类型(地址数据类型/引用数据类型)
        => Object

    7. 检测数据类型
      7-1. typeof
         语法:
          -> typeof 数据
          -> typeof(数据)
        => 示例:
          -> typeof 10 + 20
          -> typeof(10 + 20)
        => 返回值(结果): 一定是一个字符串类型
          -> 数值: 'number'
          -> 字符串: 'string'
          -> 布尔: 'boolean'
          -> undefined: 'undefined'
          -> null: 'object'
        => typeof 只能准确的检测基本数据类型
          -> 准确的检测 function
        => 当多个 typeof 连用的时候, 返回值一定是 'string'
      7-2. isNaN()
        => 专门检测是否是 非数字 的方法
        => 语法: isNaN(要检测数据)
        => 返回值: 一定是一个布尔值
          -> true 表示你检测的内容是一个 非数字(不是数字)
          -> false 表示你检测的内容不是一个 非数字(是数字)
      7-3. Object.prototpye.toString.call(你要检测的数据)
        => 返回值: 必然是一个字符串类型
          -> '[object 你检测的数据类型单词]'
        => 可以准确的检测所有数据类型


-    8. 数据类型转换

 8-1字符串与数字的转换规则:

①隐式转换:        

a.字符串与数字相加时,(凡是通过加号连接的)结果转字符串,效果为字符串的拼接.

b.除了加号以外的运算符,比如减,乘除求余...结果全都是数字===(全是数字运算)

注意事项:

1.俩个数值字符串做了除+以外的运算,结果为数字(这些是以加号为分类的)

2.如果遇到了非数字字符串,做+以外的运算,结果为NaN,NaN也是数字类型

例如: console.log("ss"-"ss")

②显示转换(靠函数实现)

第一:字符串转数字

         Number()
          => 语法: Number(你要转换的数据)
          => 返回值(结果): 转换好的数值类型
          => 转换规则: 把要转换的数据当做一个整体来看待
            -> 如果可以转换成合法数字, 那么就是一个数字
            -> 如果不可以转换成合法数字, 那么就是 NaN(Not a Number)
         parseInt()
          => 语法: parseInt(你要转换的数据)
          => 返回值(结果): 转换好的数值类型
          => 转换规则:
            -> 不管是什么数据类型, 都是一位一位看待
            -> 如果第一位就不能转换成合法数字, 那么直接返回 NaN 结束转换
            -> 如果第一位可以转换, 那么保留, 继续看第二位
            -> 以此类推, 直到不能转换的为止
         parseFloat()
          => 语法: parseFloat(你要转换的数据)
          => 返回值(结果): 转换好的数值类型
          => 转换规则:
            -> 和 parseInt 一模一样
            -> 只是可以识别一个 小数点

第二 :数字转字符串

String()
          => 语法: String(你要转换的数据)
          => 返回值(结果): 转换好的字符串类型
          => 所有数据都可以转换
toString()
          => 语法: 你要转换的数据.toString()
          => 返回值(结果): 转换好的字符串类型
          => undefined 和 null 不能转换
          => 注意: cannot read property(名字) of undefined(null)
            -> 你一定写了一句代码是 xxx.名字()
            -> 证明你的 xxx 是 undefined 或者

实际的运用

①    数字转字符串:    console.log(10 + "");

②   字符串转数字:    console.log("123" / 1);   

 8-2 进行字符串拼接
          => 使用 加号(+) 进行字符串拼接
          => 在 js 内 加号(+) 有两个作用
            -> 字符串拼接: 当运算符号任意一边是字符串的时候, 会进行字符串拼接
            -> 数学运算: 只有符号两边都是数值或者布尔的时候, 会进行数学运算
          => 在字符串拼接的时候, 为了不改变原始字符串
            -> 一般会拼接一个 空字符串('')
  8-3. 转布尔
        Boolean()

          => 语法: Boolean(你要转换的数据)
          => 返回值(结果): 转换好的布尔类型
          => 在 js 中, 只有五个内容是 false, 其余全都是 true
            -> 数值 0
            -> 数值 NaN
            -> 空字符串 ''
            -> undefined
            -> null
      双取反(!)


    9. 运算符
        运算符三要素:优先级,结合方向,操作目数。
      9-1. 算数运算符(数学运算符)
         +
         -
         *
         /
        %
      9-2. 赋值运算符
         =

            作用:将等号右值赋给左边的变量(自左向右结合)

             注意:赋值表达式是有值的:他的值就是右值。

        复合赋值运算符
         +=
         -=
         *=
         /=
         %=
      9-3. 比较(关系)运算符==》 通过关系运算符连接的表达式结果是布尔值==结合方向:自左向右
         >
         <
         >=
         <=
         ==    只比较值, 不管数据类型(逻辑等于),判断俩个值是否相等.
         ===   值和数据类型都比较,必须一致,不能数据转换(严格逻辑相等)
         !=    只比较值, 不管数据类型(逻辑不等)
         !==   值和数据类型都比较
   

  9-4. 逻辑运算符:是将若干个逻辑量连接,结果依然为布尔值
         ①&&:完成一个功能,有N个步骤,每个步骤都得实现,这个功能才能完成,每个步骤间的关系称为与
          => 同真为真, 一假则假
        ②|| 完成一个功能,有N个方法,每个方法都能搞定这件事,各个方法间的关系称为或
          => 一真为真, 同假则假
        ③ !:某个条件的对立面
          => 本身是 true 结果是 false
          => 本身是 false 结果是 true
     短路表达式
          => 作用1: 用来执行一段代码
            -> && 短路::短路与:当首次遇到条件为假的表达式时,后续代码不再执行
              10 > 5 && console.log('hello world')
               5 > 10 && console.log('hello world')
            -> || 短路
              +10 > 5 || console.log('hello world')
               5 > 10 || console.log('hello world')
          => 作用2: 用来获取一个值
            -> && 短路::短路或:当首次遇到条件为真的表达式时,后续代码不再执行
               var res = 10 > 20 && 30 > 20
              var res = 20 > 10 && 30 > 20
              如果前面一半是 false, 那么 res 得到的就是 false
               如果前面一半是 true, 那么 res 得到的一定是后面一半的结果
            -> || 短路
              var res = 10 > 20 || 30 > 20
              var res = 20 > 10 || 30 > 20

               如果前面一半是 true, 那么 res 得到的就是 true
               如果前面一半是 false, 那么 res 得到的一定是后面一半的结果
      9-5. 位运算(不纠结)
         &     按位与
         |       按位或
         ^       按位非
         ~        按位异或
        <<        按位向左
        >>        按位向右
      9-6. 自增自减运算符(对自身变量进行自加一或者自减一)
         ++
         --
         示例: ++
          => 前置++: ++ 在变量前面
          => 后置++: ++ 在变量后面
          => 共同点: 都会进行 +1 运算
          => 区别: 在于参与运算的时候
            -> 前置++: 先把变量的值改变, 用改变以后的值参与运算
            -> 后置++: 先把变量的值参与运算, 然后在改变变量的值
      9-7. 三目运算符(三元表达式)
         条件 ? 成立 : 不成立
         作用1: 用来执行代码
          => 20 > 10 ? console.log('你说的对') : console.log('滚犊子')
          => 10 > 20 ? console.log('你消音') : console.log('你说得对')
          => 执行一段简单的代码
         作用2: 用来进行赋值
          => var sex = 1 // => 表示性别 1 男性 0 女性
          => var gender = sex === 1 ? '男' : '女'

9-8 字符串扩展
        在 js 内 单引号 或者 双引号 包裹的都是字符串
        在 js 内 反引号(``) 包裹的也是字符串, 起名叫做 模板字符串
        从字符串的角度来说, 是没有区别的

     9-9 模板字符串优势
        1. 可以直接换行书写
        2. 可以直接在字符串内解析变量
          => 当你需要在模板字符串内解析变量的挥手书写 ${ 变量 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是打工人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值