js基础一些知识点总结

js基础一些知识点总结

数据类型

undefined与null的区别

let num //undefined
console.log(undefined+1)//NaN

undefined 声明一个变量没有赋值

let num = null  //null
console.log(null+1)  //1

null赋值了但内容为空

检测null数据类型得到的是object

因为js底层的语言设计缺陷所导致的

隐式转换

  1. +号作为正号解析可以转换为Number
  2. 任何数据和字符串相加结果都是字符串
  3. 减法- 只能用于数字,它会使空字符串""转换为0

类型转换

  1. 0、undefined、null、false、NaN转换为布尔值后都是false,其余为true
  2. null经过数字转换之后会变为0
  3. undefined经过数字转换转换会变成NaN
  4. NaN不等于任何值,连它自己都不等于

逻辑与与逻辑非的短路问题

符号短路条件
逻辑与&&遇到false就不执行右边的代码
逻辑非||遇到true就不执行右边的代码

&&只要有一个false运算结果就为false ||只要有一个true运算结果就为true

&&优先级大于||优先级

退出循环break与continue的区别

break:退出整个循环,不再执行此循环

continue:退出本次循环,继续执行下次循环

数组的操作

  1. push 动态向数组的尾部添加一个单元
  2. unshift 动态向数组头部添加一个单元
  3. pop 删除最后一个单元
  4. shift 删除第一个单元
  5. splice 动态删除任意单元

使用上面4个方法时,都是直接在原数组上进行操作,即成功调任何一个方法,原数组都跟着发生相应的改变。并且在添加或删除单元时 length 并不会发生错乱

splice()不能在循环中使用,删除元素会使元素长度发生改变,数组的索引值也相应变化,会删除错乱

函数

函数参数

形参过多 会自动填上undefined

实参过多 多余的实参会被忽略(函数内部有一个argument,里面装着所有的实参)

如果不传入实参,会导致结果为undefined,所以可以给形参默认值,未传参时取默认值

返回值

return函数可以没有return,但是会默认返回undefined

作用域分类 全局作用域和局部作用域

局部作用域-函数作用域

如果函数内部变量没有声明,直接赋值,当作全局变量来看

函数内部的形参也可以当作局部变量

局部作用域-块级作用域( {}里的变量 ,如if)

必须是let const声明的变量

匿名函数与具名函数

    // 1 函数表达式(匿名函数 )
    let fn = function (x, y) {
      console.log('函数表达式')
      // console.log(x + y)
      return x + y
    }

具名函数调用的时候可以写到任意位置

匿名函数,比先声明函数表达式,后调用

立即执行函数 (之后会经常使用

/* 第一种写法 */
    (function (a,b) {
      console.log(a+b)
    })(23)
    // 第二种写法
    (function (a,b) { 
    console.log(a+b)
    }(2,3))

避免全局变量之间的污染,多个立即执行函数之间使用分号隔开

对象

  let obj = {
    uname:'小红',
    age:18,
    sex:'女',
  }
  for(let k  in obj){
    //console.log(k) // 属性名 'uname' 'age' 'sex' 数据类型 string
    console.log(obj.uname)// 输出属性值
    //console.log(obj.k) // undefined 因为对象里面没有k这个属性,所以是undefined
    // console.log(obj.k) 相当于 console.log(obj.'uname')
    // 对象名['属性名']
    console.log(obj['uname']) // 'uname' === k 
    console.log(obj[k]) // 输出属性值 obj[k]
   // k是获取对象的属性名  对象名[k]是获取属性值
  }

堆栈空间分配
栈 : 由操作系统自动分配释放存放函数的数值, 局部变量的值 简单数据类型存放在栈里面
堆: 一半由程序员分配释放, 若程序员不释放, 由垃圾回收机制回收 引用数据类型存放在堆里面

在这里插入图片描述

值类型: 存储的是值本身,string number boolean undefined null
引用类型存储的仅仅是地址(引用) 通过new关键字创建的对象 array object function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值