读书笔记-javascript高级程序设计(持续更新)

<script>标签

script 没有 defer 和 async

会停止(阻塞)dom 树构建,立即加载,并执行脚本

script 带 async

不会停止(阻塞)dom 树构建,立即异步加载,加载好后立即执行。不保证脚本按照出现的先后顺序执行

script 带 defer

不会停止(阻塞)dom 树构建,立即异步加载。加载好后,如果 dom 树还没构建好,则先等 dom 树解析好再执行;如果 dom 树已经准备好,则立即执行。

null的应用场景及其与undefined 的区别:

  • null用于指向一个空对象(typeof null返回object),在定义一个未初始化的对象变量时,应赋值为null。
  • 而无论在任何时候都没必要把一个变量显示地赋值为undefined
  • null==undefined 会返回true
  • 对于声明而没有赋值的变量,typeof操作符会返回undefined
    对于没有声明的变量唯一能执行的操作就是typeof ,返回undefined

NaN

  • 用于表示本来要返回数值却没有返回数值的情况(这样就不会抛出错误了),例如一个数除以0会返回NaN。
  • 任何值等于NaN都会返回false,包括NaN本身
  • isNaN() 函数判断一个值能否被转换为数值

Boolean(x)会返回false的值
0,null,undefined,空字符串,NaN

String(x)与x.toString()的区别:
undefined和null没有toString方法,而String(undefined)和String(null)返回"undefined"和"null"

slice()与substr()和substring()的区别

  • slice和substring的两个参数是截取字符串的起止索引位置
  • substr的参数是起始索引和截取的长度
  • slice,substr都支持负索引,即从后往前数。(substr的第二个参数是子串长度,所以当它为负时会被转换为0)
  • substring所有负参数都会被转换为0

基本数据类型为什么可以访问原型对象上的方法

var a='abc'
var b=a.length

此处a是一个基本类型的变量,本不应该具有任何属性和方法。js定义了三种基本包装类型,Boolean,Number和String,在读取模式下访问变量时,js会通过基本包装类型的构造函数创建一个该类型的实例,并把基本类型的变量作为参数传入。接下来就是通过该实例来访问原型上的方法和属性,访问结束后便立即销毁该实例
js进入第二行代码时,从内存访问了a,此时后台执行了三个操作
1,创建一个String实例
2,访问String实例上的length属性
3,将该实例指向null,随后被垃圾收集器回收

正则之match和exec

var text='123asf345df2'
var reg=/[1-9]+/g
var match=text.match(reg)
console.log(match)                           
for(let i=0;i<3;i++){
    console.log(reg.exec(text))
}

输出结果为

[ '123', '345', '2' ]
[ '123', index: 0, input: '123asf345df2', groups: undefined ]
[ '345', index: 6, input: '123asf345df2', groups: undefined ]
[ '2', index: 11, input: '123asf345df2', groups: undefined ]
  • match是字符串上的方法,返回的是所有匹配结果组成的数组
  • exec是正则对象的方法,用于迭代匹配,每执行一次匹配一次,每次返回该次匹配的字符串和起始索引,输入串等信息的数组

包含子模式的情况

var text='123asf345df2'
var reg=/[1-9]+([a-z])/g
var match=text.match(reg)
console.log(match)
for(let i=0;i<3;i++){
    var res=reg.exec(text)
    console.log(res)
}

输出结果

[ '123a', '345d' ]
[ '123a', 'a', index: 0, input: '123asf345df2', groups: undefined ]
[ '345d', 'd', index: 6, input: '123asf345df2', groups: undefined ]
null

exec返回的数组中第一个是当前匹配到的整个串,后面是匹配到的子串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值