○●※

●、基本知识

○、完整的JS组成:

1、核心(ES)

2、文档对象模型(Document Object Model) - DOM

允许让 JS 与 HTML 文档打交道

3、浏览器对象模型(Browser Object Model) - BOM

允许让 JS 与 浏览器进行交互

○、JS中window与global是什么关系

全局对象 global 是在全局上下文中的变量对象。

1、global 变量本身不可直接访问,可通过创建属性来指向其本身(间接访问);

也就是 window,其引用了 global,所以访问 window 即是访问 global。

2、在全局上下文里面,也可以用 this 访问 global,所以在全局上下文里面。

window === this; //true

3、Math 等可看作global 的属性,global 的属性的访问往往省略掉前缀,

比如:Math.abs(1) === [[global]].Math.abs(1)
注:JavaScript运行需要JavaScript解释器,解释器运行的时候,会创建一个全局对象window

○、escape,encodeURI,encodeURIComponent有什么区别?

转载文档
这几个方法都可以对字符串进行编码和解码,都能解决 html 之间URL传输参数引起的中文乱码问题,那它们有什么区别吗?

编码字符对照表

名称 不编码字符 备注
escape
- ASCII 字母和数字
- -_.!~*’()
ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。


encodeURI

- ASCII 字母和数字
- -_.!~*’()
- ;/?:@&=+$,#


encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
encodeURIComponent
- ASCII 字母和数字
- -_.!~*’()
decodeURIComponent会转义 ;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号

有编码就有解码

编码 解码
escape unescape
encodeURI decodeURI
encodeURIComponent decodeURIComponent

○、NaN == NaN 的结果是啥?为什么?

结果

  • NaN == NaN 执行结果是 false。
  • NaN虽然表示是一个非数字,但是一般是算术运算执行的结果,因此 NaN 仍然是 数值类型。
  • 可以理解为一个随机正无穷大随机数。

NaN == NaN // false typeof NaN // “number”
原因
JavaScript的规定, NaN表示的是非数字, 那么这个非数字可以是不同的数字,因此 NaN 不等于 NaN。
注:两个NaN永远不可能相等

○、window.confirm()

文档
confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框。
特点

  • 如果用户点击确定按钮,则 confirm() 返回 true。如果点击取消按钮,则 confirm() 返回 false。
  • 在调用 confirm() 时,将暂停对 JavaScript 代码的执行,在用户作出响应之前,不会执行下一条语句。
  • 在用户点击确定按钮或取消按钮把对话框关闭之前,它将阻止用户对浏览器的所有输入。
  1. var rs=window.confirm("您是否要删除指定记录");
  2. if (!rs) {return;}
  3. //...

○、oninput、onchange与onpropertychange事件区别

文档

事件名称 描述


oninput

1. 在value改变时触发,实时的,即每添加或删除一个字符就会触发;
1. 通过js改变value时。却不会触发;
1. 从浏览器的自己主动下拉提示中选取时,不会触发。
onchange onchange事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发;


onpropertychange

1. onpropertychange事件却是实时触发,即每添加或删除一个字符就会触发
1. 通过js改变也会触发该事件。可是该事件IE专有
1. 当input设置为disable=true后。onpropertychange不会触发。

●、UTILS

○、动态插入script,并在加载完成后执行callback

○、js区分苹果手机,安卓手机和windows手机

○、JS中 关于 with

○、console对象

●、文档地址

○、async 函数

○、JavaScript 对象

String

Object.getPrototypeOf()

Date


○、码点相关

  1. '\z' === 'z' // true 普通文本
  2. '\172' === 'z' // true ASCII
  3. '\x7A' === 'z' // true 16进制
  4. '\u007A' === 'z' // true Unicode
  5. '\u{7A}' === 'z' // true es6Unicode

ASCII

●、分类知识点

JS COLLECT - 图1