码农之家

js常见错误总结

alert

其他类型转数字类型

字符串转数字

Symbol转数字

parseFloat、parseInt

字符串拼接

条件判断里的相互转换规则

null、undefined、NaN

规律

webkit底层运行机制

底层渲染过程

  1. 在浏览器中打开页面,浏览器引擎会渲染相关的代码(包含JS代码),换句话说,会把代码自上而下执行
  2. 浏览器想要执行代码,会提供一个供代码执行的环境,我们把这个环境叫做ECStack(Execution Context Stack执行环境栈)=>栈内存Stack
  3. 最开始执行的是全局代码,所以会形成一个EC(GLOBAL)全局上下文,在栈内存中执行全局的代码
  4. 在全局的执行上下文中有一个VO(GLOBAL)全局变量对象,可以把接下来定义的变量和对应的值存储到这里面

栈内存

let a = 1

// 1.创建一个值(基本类型值直接存储在栈内存中即可)
// 2.创建一个变量a,把其存储到VO(GLOBAL)中
// 3.让创建的变量a和创建的值12关联在一起(=赋值的操作)
// 顺序很重要,不能颠倒

堆内存

let n = {name: 'wilber'}

// 1.创建值
//	 1.开辟一个堆内存(Heap),每一个堆内存都有一个16进制的地址
//	 2.把对象中的键值对分别存储到堆内存中
//	 3.把堆内存的地址放在栈内存中,用来提供变量的引用
// 2.创建一个变量
// 3.让变量和之前创建堆内存的地址进行关联

Function

作用

目的

创建过程

function fn()

// 1.创建值
//	 1.开辟一个堆内存
//	 2.把函数体中的代码当作字符串储存在堆中
//	 3.把堆地址放到栈中
// 2.创建一个变量
// 3.让变量和地址关联

执行依赖条件

fn()

// 1.创建一个全新的执行上下文,把执行上下文压缩到栈内存中去执行(进栈执行)
// 2.在这个上下文中,也存在一个AO(变量对象),用来存储当前上下文代码执行中所创建的变量
// 3.代码执行
// 4.当上下文的代码都执行完后,如果该上下文中的信息没有被外界占用的情况,则执行完出栈

形参、实参

arguments

Array

删除数组末尾一项

数组末尾追加项

改变原数组

不改变原数组

String

字符查找

字符串截取

字符替换