记录一下学习JS的过程

前言

其实想学js很久了, 但是没有一个好的理由, 但是想到三件套是很多前端工具基础, 而js更是基础中的基础(>_<), 这下不得不学了. JS的语法和C艹很像, 比如while, for, class的写法, 但是逻辑却和Python很接近, 毕竟同为轻量级的解释性脚本语言, 对于自身的定位自然是易于上手和开发.

因此我认为对于语法知识的掌握速度应该是没什么问题的, 更重要的是要理解js的本质–一门主要服务于HTML和Web的语言, 这就要求我们要更多的在实战中练习学到的知识, 更要广泛的尝试项目.

解释环境

Node: v20.10.0

参考资料

 

基础语法

类型

JS中有6个数据类型

  • string
  • number
  • boolean
  • object
  • function
  • symbol

3个对象类型

  • Object
  • Date
  • Array

和2个不包含任何值的数据类型

  • null
  • undefined

typeof可以查看数据类型

typeof "John"                 // 返回 string 
typeof 3.14                   // 返回 number
typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object (Array)
typeof {name:'John', age:34// 返回 object (Object)
typeof new Date()             // 返回 object (Date)
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (如果 myCar 没有声明)
typeof null                   // 返回 object

注意:

  • NaN 的数据类型是 number
  • 数组(Array)的数据类型是 object
  • 日期(Date)的数据类型为 object
  • null 的数据类型是 object
  • 未定义变量的数据类型为 undefined

 

正则表达式

正则表达式可以借由特定的语法规则, 表示一类字符串的集合

这里仅给出正则表达式的用法, 关于完整的介绍, 请查询RegExp, 以及正则表达式

语法

正则表达式经常用/RegExp/[modifier]定义

let patt = /world/i

常用方法

在js中, 正则表达式常用于String的search()和replace()方法

  • search()方法检索与给定字符串或正则表达式匹配的字串的起始位置, 如果找不到则返回-1

    let s = "hello, WORLD"
    let r = /world/i
    console.log(s.search(r))
    // 输出结果: 7
    // 不区分大小写
  • replace()方法可以替换匹配的字符串或正则表达式为给定的字符串, 并返回一个新的字符串

    let s = "hello, WORLD"
    let r = /world/i
    s = s.replace(r,"Vanadium")
    console.log(s)
    // 输出结果: hello, Vanadium

修饰符

修饰符 描述
i 不区分大小写
g 全局匹配
m 多行匹配

模式

  • 字符范围

    表达式 描述
    [abc] 查找字符
    [0-9] 查找数字
    (x|y|z) 查找|分隔的字符
  • 元字符(转义字符)

    元字符 描述
    \d 匹配数字
    \s 匹配空白字符
    \b 匹配单词边界
    \uxxxx 匹配十六进制数xxxx匹配的Unicode字符
  • 量词

    量词 描述
    n+ 匹配包含一个或多个n的字符串
    n* 匹配包含零个或多个n的字符串
    n? 匹配包含零个或一个n的字符串

RegExp对象

在js中, 正则表达式的对象类型是RegExp

let r = /WORLD/g
console.log(r.constructor)
// 输出结果: ƒ RegExp()
  • test()用于检测某个字符串是否匹配给定的正则表达式
    let r = /V/i
    let s = "Vanadium"
    let flag = r.test(s)
    console.log(flag)
    // 输出结果: true
  • exec()用于检索所有匹配的结果, 返回一个数组
    let s = "vanadium, vagrant";
    let r = /(v)/g;
    console.log(r.exec(s));
    // 输出结果: (2) ['v', 'v', index: 0, input: 'vanadium, vagrant', groups: undefined]