∞拾年

js基础
数据类型String (字符串)Number (数值)【小数点的加减不准确,因为计算机是二进制,计算过程中有损耗】...
扫描右侧二维码阅读全文
02
2020/09

js基础

数据类型

  1. String (字符串)
  2. Number (数值)【小数点的加减不准确,因为计算机是二进制,计算过程中有损耗】
  3. Boolean (布尔)
  4. undefined(未定义)
  5. null (空指针)
  6. Object(对象)
  7. (es6) symbol(独一无二)

堆栈内存

  1. 栈内存和堆内存
let a = 10  数值10存放在栈内存中
let b = {
      m:10,
      n:20
    }
b 指向的是堆内存中的地址 {...}存放在堆内存中,如果let c = b,c.m = 12 改变 b.m 的值也会改变,因为c和b 指向的是同一个堆内存中的地址,当然如果想解决这个问题后面会讲到深拷贝,浅拷贝相关知识,
  1. 堆栈溢出

    当存储的数据达到某一限制的时候,会出现堆栈溢出,栈内存会自动销毁,堆内存不会,当堆内存不断累积,不释放内存,就会出现内存泄漏【内存泄漏的结果就是堆栈溢出】

  2. 垃圾回收机制

    语言的垃圾回收机制,有手动和自动两种方式,js只是自动回收
    垃圾回收机制其实就是将栈中的变量设置为null 空指针,将所有栈中指向这个堆地址的变量都设置为null,堆中的内存并不会 
    立即被清除掉,浏览器会根据内存的使用情况清除堆中的孤儿(没有被指向)对象
    

类型转换

  1. toString(x) 转换为字符串,x可以是2/16.等。
  2. toFixed(x) 保留x位有效数字
  3. parseFloat(x) 转换为浮点类型数值
  4. parseInt(x) 转换为整数
  5. Number(x)强转数值 3.4 是从字符第0位开始到非有效数字结束如果第0位是非有效数字则返回NaN,5.只要有一个是非有效
    数字就返回NaN

赋值运算和一元运算

++i和i++ 的区别 赋值运算有区别 i++ 是先将i 的值赋值 然后在++;++i 反之是先运算在赋值
let i = 1 if(i--){} 条件成立

进制转换

10 的2进制是 1010 转换过程是 10除2取余 然后在继续除2取余
1010 的十进制是 12(3) + 02(2) + 12(1) + 02(0)【8421快速转换】
8421
1101
结果是 8+4+1 = 13

位运算

  1. ~ 位非运算符 【+1 取反】
  2. & 位与运算符 【转换位二进制取&】
  3. | 位或运算符 【同上】
  4. << >> 左右移位 【1<<n 求2的n次幂】

关系运算符

= < > <= >= ==【不建议使用,自带隐式转换 let a = 2 if(a == '2') if条件成立】
===【值和类型都相同】
【NaN 与任何内容都不想等 包括自己; null == undefined 0 == '' == false】
if(x == false)【x式=是"" 0 false 满足条件】
if(x === false) 【x是 false 满足条件】
if(!x)【x是 “” 0 false null undefined NaN 满足】
这里涉及到隐式转换的问题 = 号两边要转换成相同的数据格式在做比较,而!x 是转换成布尔值 上面六种转换完都是false 都满足条件

逻辑运算符和三元预算符

&& ||
x = x>50 等同于 x = x>50?true:false
x = x>4?true:x===2?true:0 嵌套
x = x || 50 等同于 x?x:50 【熔断处理】

ES6中数组的解构赋值

//1左右两边结构一样
let [a,b,[c,d]] = [1,2,[3,4]]
//2左右两边结构不一样
let [a,b] = [1,2,3,]  //a:1,b:2
let [a,b] = [1] //a:1 b:undefind
//给定默认值
let [a,b=1,c=2] = [3] //a:3 b:1 c:2
//扩展运算符[注意扩展运算符只能写在最后一个元素]
let [a,...b] = [3,4,5,6] //a:3 b:[4,5,6]

数组的常用方法

let arr = [1,2,3,4]
let arrTwo [8,9,10]
//清空数组实现方法
arr = []
arr.length = 0
arr.splice(0,arr.length)

//数组转换成字符串
arr.toString()
arr.join(',') //参数为空 默认是用toString()方法

//数组的拼接
arr.concat(arrTwo) //不会改变原数组 返回一个新数组
//扩展运算符在等号左边表示将剩余的数据打包成一个数组
//在等号右边表示将数组中的所有元素放到当前的位置
let res = [...arr,...arrTwo] 

//数组反转
arr.reverse() //会修改原来的数组

//截取数组指定范围的内容
arr.slice(1,3) //包头不包尾【包含起始位置 不包含结束位置】 index:1,2

//查找指定元素位置
arr.indexOf(元素,从哪个位置开始查找) //找到了就是返回元素的对应位置 没有找到的话就会返回-1
arr.lastIndexOf() //从右到左查找
arr.includes(元素) //返回true 或false
Last modification:June 20th, 2021 at 09:12 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment