JavaScript总结
一.JS工作中的应用
1.变量
1.1变量的特点 var let
--var的特点?
var声明的存在变量提升
允许在相同作用域内重复声明同一个变量
var声明的变量可以在整个程序中有效
--let的特点?
let声明的不存在变量提升
let不允许在相同作用域内重复声明同一个变量
es6允许块级作用域任意嵌套,外层无法读取内层作用域变量,反之可以。
let声明的变量只在代码块内有效
1.2常量的特点 const
const声明一个只读常量,一旦定义值不可以改变
const不允许在相同作用域内重复声明同一个变量
允许块级作用域的任意嵌套,外层无法读取内层作用域常量,反之可以
const生命的常量只在代码块中有效
--const的特点?
1.3变量和常量的命名:大小驼峰命名,匈牙利。
--见名知意
1.4.变量使用注意的地方
--能用let,不适用var
--函数,对象,元素对象不会发生改变的都是用const
--一切皆变量
2.运算符
--复合赋值运算符 += -= ...
--比较运算符 == ===(优)
--数学运算符 + %
--逻辑运算符 && || !
--一元运算符 ++ --
--三目运算符 ?:
--运算符的优先级--解决很多的面试题。
--new instanceof 运算符
3.程序的结构(上--下 左--右 内--外)
3.1分支语法--条件
--if语句的三种结构
--switch多分支语句
--try...catch...finally
--三目运算符和if的区别(三目有返回值,适合简单的条件)
--&& ||
3.2循环语句
--while和do...while循环
--for--循环数组或者类数组
--for...in--遍历数组和对象
--for...of--遍历具有iterator接口。
--终止循环--性能
break
continue
4.debug
4.1常见的错误类型
--source:查看整个页面的代码信息。
--syntax:语法,写错了关键字或者违背了语法结构
--reference:引用错误,找不到
--type:类型错误,引用不当
--range:范围错误
4.2找到错误的方式
--断点
--debug解决错误方式--控制面板、输出。
--console.log/alert输出调试
5.函数:理解函数属于对象,又是对象的构造器
--为什么使用函数、什么场景想到使用函数(封装--重用--可扩展(参数))
--函数的类别:自执行函数(闭包),事件处理函数(DOM 0级、DOM 2级),构造函数(类),回调函数(promise),箭头函数(this)
--函数内部的方法:call,apply,bind(面试题)
--函数内部的两个特殊的对象:arguments,this.
--函数和变量的预解析(解决面试题).
--类,对象,方法都是由函数构造的(所有的类名,方法名都是输出function)
6.数组
--数组以及数组的方法(熟悉)
7.包装对象--字符串、数字、布尔值
--字符串以及字符串的方法(熟悉)
8.严格模式(use strict)
--改变的语法行为
变量声明一定要加var
禁止this指向全局对象
禁止使用with语句
禁止对aarguments进行赋值
禁止使用arguments.call()
函数的参数不能重名
禁止使用八进制
9.Math内置对象的常见API
--数学运算中应用(熟悉)
10.BOM和DOM
10.1.location对象
--href--search
--hash(优)、history:框架的路由基于这个知识点。
--reload(true) -- 刷新
--定时器--异步操作
setInterval() setTimeout() clearInterval() clearTimeout()
10.2.DOM
--DOM元素的增删改查( 熟悉 )
11.js线程的概念
--同步和异步
12.鼠标和键盘对应的unicode编码
13.正则表达式--表单验证(用户体验)(熟悉正则算法--replace)
14.es语法的应用
--let const
--解构赋值
--扩展运算符
--模板字符串
--箭头函数(回调函数)
--promise
为什么使用promise
promise的状态
promise下面的原型方法
promise下面的静态方法
promise和async的区别。
--class面向对象编程的写法(混合开发面向对象)
--Object.assign():对象的合并
--Object.keys()
--Object.value()
--Object.defineProperty():方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。
--writable 描述属性的值是否可写。
--configrable 描述属性是否配置,以及可否删除
--enumerable 描述属性是否会出现在for in 或者 Object.keys()的遍历中
15.本地存储localStorage读写删除
cookie读写删除--封装函数
--购物车
--登录注册
16.ajax编写步骤(原理)
--fetch
--axios
--http的状态码(熟悉:200,304,403,404,501,502)
--解决跨域的方式(同源策略)
--jsonp--前端
--nginx--反向代理,最好的
17.面向对象的写法(class/混合开发构造函数+原型)
二.JS面试题
1.var let const的区别
2.循环的区别。
3.包装对象(一切皆对象)
4.严格模式
5.事件委托的概念:利用冒泡原理,将子元素的事件给父元素。事件委托的优缺点
6.promise
7.http状态码
8.http面试题
9.解决跨域方式
10.团队协作(沟通,命名,注释)
11.变量的类型--7种
12.数据类型的检查--typeof instanceof constructor toString
13.js的预解析--面试题
14.递归算法--论述题(求阶乘,斐波那契,数组扁平化,快速排序,深拷贝)
15.数组的重复元素去掉。
16.普通事件和事件绑定的区别。
17.事件冒泡和事件捕获。
18.普通事件和事件委托的区别。
19.写出js里面常见的兼容问题--面试题
20.正则的算法。(replace/JSON.parse/JSON.stringify/eval)
21.promise和async的区别
22.ajax的优缺点--面试。
23 17.ajax的请求方式:get/post/put/delete -- 面试
24.解决跨域的方式有哪些,最好的方式是哪个。
25.localStroage和sessionStorage以及cookie的区别
26.前端安全问题--.xss解决方案--输入过滤、输出转义
27.闭包
--闭包的概念
--闭包的特性
--闭包的优缺点
--闭包太多了怎么办
22.原型链--面试题******************
内置原型(proto):每一个对象都有一个内置属性,原型链上的对象正是依靠这个属性连结在一起。
原型链概念:实例对象与原型之间的连接(proto);
原型链过程:
23.继承--面试题
对象:属性+方法(主动/被动)
构造函数的继承:call和apply。
混合继承:构造函数的继承+原型的继承(浅拷贝,原型链继承)
24.class继承:extends关键字+super
25.面向对象常用的属性和方法**
26.http的状态码
27.插件编写注意事项。
三.JS核心的案例
1.排序算法(冒泡,快速排序)。
2.数组算法(去重,扁平化......)。
3.常见的效果
--回到顶部
--带倒计时广告弹出窗
--顶部悬浮
--tab选项卡效果
--轮播图
--幻灯片
--放大镜
--登录注册
--购物车
--正则表单验证
--易错系统
--楼梯效果
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步