JavaScript必背知识点

这篇博客详细介绍了JavaScript的基础知识,包括数据类型、运算符、函数、事件处理、对象和数组操作等,适合初学者巩固和复习JavaScript必备概念。还涵盖了ES6的新特性,如let、const和箭头函数。最后提到了原型链、函数的this绑定规则以及未来学习的方向。
摘要由CSDN通过智能技术生成

声明:本文在基础篇内不分模块,因为都是需要记忆的内容,但是实际上编写是按照学习顺序进行的,也就是题号顺序变化模块就在变化

文章目录

基础篇

1.js的数据类型及其检测方式

  • 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值)
  • 引用数据类型:对象(Object)、数组(Array)、函数(Function)
  • typeof 后面加上要检测的数据或变量

2.js中的常见打印语句有那些,常用哪个并列出原因

  • alert()
    • 以字符的形式打印数据
  • document.write()
    • 以字符的形式打印数据
  • console.log() √
    • 不阻塞程序
    • 不影响页面布局
    • 不改变数据的类型
    • 同时可以打印多个数据
    • 静默打印

3.js的组成及各部分的功能

  • DOM:文档对象模型,document,网页操作
  • BOM:浏览器对象模型,window,浏览器的窗口操作
  • ECMAScript:语法,规范,规定了js该如何书写

4.js中常见的运算符有哪些

  • 算术运算符:+ - * / %
  • 关系运算符:> >= < <= == === != !==
  • 逻辑运算符:|| && !
  • 赋值运算符:= += -= *= /= %=
  • 一元运算符:++ - -

5.强制类型转换的方法有哪些,从什么类型转成什么类型

  • 转数值
    • parseInt(data)
    • parseFloat(data)
    • Math.round(data)
    • Number(data)
  • 转字符
    • data.toString()
    • data.toFixed(n)
    • String()
  • 转布尔
    • Boolean()

6.其他类型转布尔的规则

  • 字符:非空为true
  • 数值:非0为true
  • 函数,对象,数组,都是true
  • undefined,null,NaN,都是false

7.字符转数值的规则

  • 严格转换:必须全部都是数字,才能转换,否则NaN
  • 非严格转换:从左向右依次检测,遇到数字就转,非数字,停止,如果第一位就是非数字,直接NaN

8.双分支和多分支语句的区别

  • if和switch的区别
  • if更适合处理范围
  • switch更适合处理具体的值
  • if的小括号内有隐式类型转换
  • switch的小括号和case后,都没有隐式类型转换

9.隐式类型转换的场景

  • 运算符
  • if的小括号内
  • isNaN
  • while的小括号内

10.循环语句有哪些及其完整语法

  • while(执行条件){执行语句}
  • do{执行语句}while(判断条件)
  • for(计数器;执行条件;计数器的改变){执行语句}

11.各个循环语句之间的区别

  • while和do-while
    • do-while在条件为false时,会执行一次,而while不会
  • while和for
    • while的三要素更灵活,更适合处理不确定次数的循环
    • for的三要素更集中,更适合处理确定次数的循环

12.循环的控制关键字及其功能

  • break:结束循环
  • continue:跳过某次循环

13.js的三大特殊数据

  • undefined
  • null
  • NaN

14.函数的创建和执行

  • 声明式:function fn(){}
  • 赋值式:var fn = function(){}
  • 直接直接:fn()
  • 行为执行:事件源.on事件类型 = fn

15.事件类型的分类有哪些

  • 鼠标类

    • 点击: click
    • 双击: dblclick
    • 按下: mousedown
    • 抬起: mouseup
    • 进入: mouseover(会触发事件冒泡) / mouseenter(不会触发事件冒泡)
    • 离开: mouseout(会触发事件冒泡) / mouseleave(不会触发事件冒泡)
    • 移动: mousemove
    • 右键点击: contextmenu
  • 键盘类

    • 按下: keydown
    • 点击: keypress
    • 抬起: keyup
  • 表单类

    • 获取焦点: focus
    • 失去焦点: blur
    • 改变: change
    • 输入: input
    • 提交: submit
    • 重置: reset
  • 浏览器类

    • 加载: load
    • 滚动: scroll
    • 改变大小: resize

16.函数的参数有哪些,它们之间有什么关系

  • 形参:定义时
  • 实参:执行时
  • 形参保存了实参,实参赋值给形参
  • 都是一一对应
  • 形参多,多出来的则为undefined
  • 实参多,用arguments

17.函数的返回值如何设置,为什么要有返回值

  • return
  • 为了便于将函数内部的处理结果,进行二次使用

18.什么是声明提升,如何提升

  • 将var声明的变量提升到作用域最开始的位置,原位赋值
  • 将function声明的函数,整体提升到作用域最开始的位置

19.作用域有哪些,访问规则是什么

  • 全局
  • 局部
  • 作用域嵌套之后,父不能拿子,子可以拿父

20.对象的本质和意义

  • 本质(组成):键值对
  • 意义(作用):存储数据,编程

21.对象的分类

  • 宿主:window,document
  • 本地:Object,String,Number,…
  • 内置:Math…

21.对象的操作语法及其应用场景

  • 点语法:当对象的属性是一个具体的值
  • 中括号语法:当对象的属性不是一个具体的值,是变量

22.数组的创建方式及区别

  • 字面量:var arr = []
  • 构造函数:var arr = new Array()
  • 区别:当有且只有一个数值型数据时,字面量认为是数据,构造函数认为是长度

23.栈堆的关系

  • 一对一,多对一,不能一对多

24.什么是值传递,什么是引用传递

  • 值传递:复制的是值
  • 引用传递:复制的是地址

25.什么是深浅拷贝,如何实现深拷贝

  • 浅拷贝:只拷贝地址
  • 深拷贝:只拷贝值
  • 实现深拷贝:遍历复杂数据后逐个拷贝值

26.js的哪些数据是基本类型,哪些数据是复杂类型

  • 基本(深拷贝):string,number,boolean,undefined,null
  • 复杂(默认浅拷贝,可以深拷贝):object,array(typeof是object),function

27.如何开启严格模式

  • “use strict”(建议在匿名函数内使用,在匿名函数内编写所有代码)

28.严格模式下的变更

  • 变量必须先声明,再使用
  • 函数的形参不允许重复
  • 形参的改变不会影响arguments
  • 不允许使用arguments.callee找到函数自身
  • 没有明确隶属对象的函数内部的this不指向window,指向undefined
  • 不允许使用0开头的数值
  • 不允许使用with语句

29.ES5新增的数组的方法

  • arr.indexOf() 根据数据查索引
  • arr.forEach() 遍历
  • arr.map() 遍历,并修改
  • arr.filter() 遍历,并过滤
  • arr.some() 遍历,并查询,只要有一个符合,即为true
  • arr.every() 遍历,并查询,必须所有符合,才为true
  • arr.reduce() 遍历,并归并

30.字符的方法

  • str.indexOf() 根据数据查索引
  • str.charAt() 根据索引查数据
  • str.slice() 截取
  • str.split() 分割
  • str.replace() 替换
  • str.substring() 截取
  • str.substr() 截取
  • str.concat() 合并
  • str.match() 查询
  • str.search() 查询

31.数组的排序(冒泡或选择)

  • 冒泡排序(两两比较,大的放后面)
var arr = [7,6,5,4,3];
for(var i=0;i<arr.length-1;i++){
   
    for(var j=0;j<arr.length-1-i;j++){
   
        if(arr[</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值