04-JavaScript-基础知识点总结

一、数据类型

 

1、JavaScript有几种数据类型?

  • number:数字类型
  • string:字符串类型
  • boolean:布尔值类型
  • null:空值类型
  • undefined:未定义类型
  • object:对象类型
  • symbol:symbol类型

 

(1)基本数据类型

  • number、string、boolean、null、undefined、symbol

 

(2)复杂数据类型

  • Object,包含 Function、Array、Date、RegExp、Math

 

2、判断数据类型的方式

(1)typeof

  • typeof 操作符返回一个字符串,表示未经计算的操作数的类型。
  • typeof对于基本数据类型,除了null,其他都显示正确的类型。
  • typeof对于复杂数据类型,除了function,其他都显示object。
typeof function() {}	// 'function'

typeof null === 'object'	// true

typeof NaN === 'number'		// true

 

(2)instanceof

  • instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
  • instanceof可以准确判断复杂数据类型。
let arr = [1,2,3]
arr instanceof Array	// true

 

(3)Object.prototype.toString.call()

  • toString() 方法返回一个表示该对象的字符串。
  • 能够准确判断所有的数据类型。
Object.prototype.toString.call( [] )	// '[object Array]'

 

(4)isArray

  • Array.isArray() 用于确定传递的值是否是一个数组。
Array.isArray([1, 2, 3]);	//	true

 

3、null和undefined的区别?

  • 都代表空值。
  • 转布尔值都是false。
  • null是一个对象未初始化,或将某个变量设置为空值。
  • undefined是初始化了,但未定义赋值。
null == undefined	// true
null === undefined	// false 

null + 1 			// 1
undefined + 1 		// NaN

 

4、数据类型转换

(1)转字符串

在这里插入图片描述

(2)转数字型

在这里插入图片描述

'A' - 'B' + 2	// NaN2
Number('')		// 0

(3)转布尔型

  • 在需要布尔值的地方,除了0,-0,“”,NaN,null,undefined转为false,其他所有值都转为 true,系统内部会调用Boolean函数。

 

5、== 和 === 的区别?

(1)==

  • 在比较中会先进行类型转换,再确定操作数是否相等。
  • 简单类型与简单类型比较,字符串和布尔值会转换为数字,再比较。
  • 简单类型与引用类型比较,对象转换成其原始类型的值,再比较。
  • 引用类型与引用类型比较,则比较它们是否指向同一个对象。
  • 如果有NaN,返回false。

(2)===

  • 只有两个操作数在不转换的前提下相等才返回true。

 

二、作用域

1、什么是作用域?

  • 即变量和函数生效的区域。
  • 在ES5和ES6中,分为三类作用域:全局作用域、函数作用域、块级作用域。

 

(1)全局作用域

  • 任何不在函数中或在大括号中声明的变量,都在全局作用域下。
  • 全局作用域下声明的变量可在程序的任意位置访问。

(2)函数作用域

  • 如果一个变量是在函数内声明的,它就在一个局部作用域下。
  • 这些变量只能在函数内部访问。

(3)块级作用域

  • ES6引入了let和const关键字,在大括号中使用let或const声明的变量处于块级作用域下。
  • 在大括号之外无法访问这些变量。

 

2、什么是作用域链?

  • 当使用一个变量时,JS引擎会尝试在当前作用域下查找该变量,如果没找到, 再到它的上层作用域查找,以此类推直到全局作用域。
  • 如果在全局作用域仍找不到该变量,就放弃查找。

 

三、预解析

1、什么是预解析?

  • JS引擎在运行JS代码时分为两步:预解析和代码执行。
  • 预解析:js引擎会把 js 里面所有的 var和function声明的变量在内存中进行提前声明。
  • 代码执行:从上往下执行JS语句。
  • 预解析也叫变量提升和函数提升。

 

(1)变量提升

  • 把所有的变量声明(var)提升到当前作用域的最前面,但不提升赋值操作。

(2)函数提升

  • 把所有的函数声明提升到当前作用域的最前面,但不调用函数。

(3)优先级

  • 在提升的过程中,相同的函数会覆盖上一个函数,并且函数提升优先于变量提升。

 

2、函数声明和函数表达式的区别?

  • 函数声明:享受函数提升
  • 函数表达式:归类于变量声明,享受变量提升
console.log(fun) // fun () {}
// 函数表达式
var fun = function(name) {}
// 函数声明
function fun () {}
console.log(fun) // fun (name) {}

 

3、暂时性死区?

  • 只要块级作用域内有let声明的变量,它就“绑定”这个区域,不受外部的影响。
  • 在let声明变量之前,该变量都是不可用的。这称为“暂时性死区”(temporal dead zone)。
var tmp = 123;
if(true){
    tmp = 'abc'	//ReferenceError
    let tmp;
}

 

四、内置对象

1、Math对象常用方法

在这里插入图片描述

2、数组对象常用方法

方法作用返回值是否影响原数组
push(element1, …, elementN)将一个或多个元素添加到数组的末尾返回数组新长度
pop()从数组中删除最后一个元素,数组长度-1返回该元素值
unshift(element1, …, elementN)将一个或多个元素添加到数组的开头返回数组新长度
shift()从数组中删除第一个元素,数组长度-1返回该元素值
reverse()将数组中元素的位置颠倒返回数组
sort()对数组的元素进行排序返回数组
splice(start[, deleteCount[, item1[, item2[, …]]]])删除或替换数组的元素返回被处理项目的数组
slice([begin[, end]])截取数组的元素,左闭右开返回被截取项目的数组×
join([separator])将一个数组所有元素连接成字符串返回字符串×
concat()arr1.concat(arr2, arr3) 合并两个或多个数组返回数组×
indexOf( searchElement )数组中查找给定元素的第一个索引如果存在返回索引号,否则返回-1×
forEach()遍历数组,为数组中含有效值的每一项执行一次 callback 函数没返回值×
map()遍历数组,为数组中含有效值的每一项执行一次 callback 函数返回数组×
filter()对数组每一项进行判断返回符合规则的新数组×
every()测试数组每一项是否符合规则返回布尔值×
some()测试数组是否至少有一项符合规则返回布尔值×
flat()数组扁平化返回数组×

(1)数组的splice 与 slice 的区别?

方法参数描述
splicesplice(start,num,item1,item2,…)从start索引开始,截取num个元素,并插入item1、item2到原数组里,影响原数组
sliceslice(start,end)从start开始,截取到end - 1,如果没有end,则截取到最后一个元素,不影响原数组
  • 参考网站:https://blog.csdn.net/qq_39132756/article/details/85007082
     

3、字符串对象常用方法

方法作用
charAt(index)从一个字符串中返回指定的字符
substring( Start[, End])返回在开始索引到结束索引之间的新字符串,左闭右开
replace()返回一个由替换值更换掉待处理值的字符串
split()返回一个由分隔符分割成子字符串的数组
toUpperCase()将调用该方法的字符串转为大写形式并返回
toLowerCase()将调用该方法的字符串转为小写形式并返回
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值