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()的遍历中

https://www.jianshu.com/p/8fe1382ba135

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选项卡效果

--轮播图

--幻灯片

--放大镜

--登录注册

--购物车

--正则表单验证

--易错系统

--楼梯效果

posted @ 2020-08-26 22:11  孤常一人  阅读(108)  评论(0编辑  收藏  举报