部分易错JS知识点整理(缓慢填坑)
主要还是各地搜刮来的,本人对于这方面的总结还是8彳亍,给各位大佬磕头了砰砰砰
1.

2.JS闭包和匿名对象以及作用域


3.
函数声明
function sum(a,b){
return a+b
}
函数表达式
var sum = function(a,b){
return a+b
}
var sum = new Function('a','b','return a+b')//不推荐使用,影响函数解析性能
4.
JavaScript有3大对象,分别是本地对象、内置对象和宿主对象。
本地对象
- 与宿主无关,独立于宿主环境的ECMAScript实现提供的对象。
- 简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。
- 这些引用类型在运行过程中需要通过new来创建所需的实例对象。
- 包含:
Object、Array、Date、RegExp、Function、Boolean、Number、String等。
内置对象
- 与宿主无关,独立于宿主环境的ECMAScript实现提供的对象。
- 在 ECMAScript 程序开始执行前就存在,本身就是实例化内置对象,开发者无需再去实例化。
- 内置对象是本地对象的子集。
- 包含:
Global和Math。 - ECMAScript5中增添了
JSON这个存在于全局的内置对象。
宿主对象
- 由 ECMAScript 实现的宿主环境提供的对象,包含两大类,一个是宿主提供,一个是自定义类对象。
- 所有非本地对象都属于宿主对象。
- 对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,浏览器对象有很多,如
Window和Document等。 - 所有的
DOM和BOM对象都属于宿主对象。
6.
“==”运算符(两个操作数的类型不相同时)
- 如果一个值是null,另一个值是undefined,则它们相等
- 如果一个值是数字,另一个值是字符串,先将字符串转换为数字,然后使用转换后的值进行比较。
- 如果其中一个值是true,则将其转换为1再进行比较。如果其中的一个值是false,则将其转换为0再进行比较。
- 如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,再进行比较。
对象到数字的转换
- 如果对象具有valueOf()方法,后者返回一个原始值,则JavaScript将这个原始值转换为数字(如果需要的话)并返回一个数字。
- 否则,如果对象具有toString()方法,后者返回一个原始值,则JavaScript将其转换并返回。(对象的toString()方法返回一个字符串直接量(作者所说的原始值),JavaScript将这个字符串转换为数字类型,并返回这个数字)。
- 否则,JavaScript抛出一个类型错误异常。
空数组转换为数字0
- 数组继承了默认的valueOf()方法,这个方法返回一个对象而不是一个原始值,因此,数组到数学的转换则调用toString()方法。空数组转换为空字符串,空字符串转换为数字0.
7.
在函数中,可以通过该引用更改传递对象的内容,但是你不能修改调用者具有的引用,因为你的引用只是一个副本:
var foo = {'bar': 1};
function tryToMungeReference(obj) {
obj = {'bar': 2}; // won't change caller's object
}
function mungeContents(obj) {
obj.bar = 2; // changes _contents_ of caller's object
}
tryToMungeReference(foo);
foo.bar === 1; // true - foo still references original object
mungeContents(foo);
foo.bar === 2; // true - object referenced by foo has been modified
8.
javascript中实现跨域的方式总结
- 第一种方式:jsonp请求;jsonp的原理是利用<script>标签的跨域特性,可以不受限制地从其他域中加载资源,类似的标签还有<img>.
- 第二种方式:document.domain;这种方式用在主域名相同子域名不同的跨域访问中
- 第三种方式:window.name;window的name属性有个特征:在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。
- 第四种方式:window.postMessage;window.postMessages是html5中实现跨域访问的一种新方式,可以使用它来向其它的window对象发送消息,无论这个window对象是属于同源或不同源。
- 第五种方式:CORS;CORS背后的基本思想,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是应该失败。
- 第六种方式:Web Sockets;web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。
9.
部分易错JS知识点整理(缓慢填坑)的更多相关文章
- JS知识点整理(二)
前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...
- JS初学的一些易错的知识点
1. false ,0 , "" ,undefined , null 在Boolean 环境下当成 false: null 在数值环境下当成 0: undefined 在数值 ...
- JS知识点整理(一)
前言 本文把平时的一些读书笔记和理解进行了整理归纳,包含一些易混淆.遗漏的知识点,也会配上一些例子,可能不是很完整,还会有点杂,但也许会有你需要的(目前先整理了一部分,笔记有点多,后续会持续更新). ...
- fabric.js 知识点整理
fabric.js是一个很好用的 canvas 操作插件,下面整理了一些平时项目中用到的知识点: //1: 获得画布上的所有对象: var items = canvas.getObjects(); / ...
- java易错基础知识点
一. Switch 1.其能接受的数据类型有四个,char , byte, short, int2.Default 可放在switch中的任何一个地方,但只有给定的条件匹配不到时,才会执行3.Case ...
- 易错java知识点总结(持续更新)
1. 2.java转义字符的理解 参考知乎大神:http://www.zhihu.com/question/29232624 正向和逆向处理转义字符 正向:把两个字符 \ n 识别为一个转义字符 ne ...
- js 知识点整理
1. indexOf 与String类似,Array也可以通过indexOf()来搜索一个指定的元素的位置: var arr = [10, 20, '30', 'xyz']; arr.indexOf( ...
- 【学习笔记】JS知识点整理
1 原型/原型链 1-1 原型 定义:原型是function对象的一个属性,定义了构造函数制造出的对象的公共祖先.通过该构造函数产生的对象,可以继承该原型的属性和方法. 原型是一个对象. 可以利用原型 ...
- 容易遗忘的JS知识点整理
1.hasOwnProperty相关 为了判断一个对象是否包含自定义属性而不是原型链上的属性,我们需要使用继承自 Object.prototype 的 hasOwnProperty方法.hasOwnP ...
随机推荐
- 数据结构 -- 栈(Stack)
一.栈的简介 定义 栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据 ...
- Win10默认输入法怎么打顿号
这个问题发现于一个月之前,解决于今天,方式百度. 一.主要是想纪念一下我这一个月的蠢操作(贴图证蠢): 这一个月我的顿号都是这样打出来的,(′д` )…彡…彡 二.闲话少叙,说一下解决方式: 之前用的 ...
- 序列化,os,sys,hashlib,collections
序列化,os,sys,hashlib,collections 1.序列化 什么是序列化?序列化的本质就是将一种数据结构(如字典,列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化. ...
- 8-MySQL DBA笔记-测试基础
第三部分 测试篇 测试需要掌握的知识面很广泛,本篇的关注点是数据库的性能测试和压力测试,对于其他领域的测试,由于涉猎不多,笔者就不做叙述了.DBA的工作职责之一就是评估软硬件,这往往是一项很耗时的工作 ...
- 手写map, filter函数
function map(arr, fn) { let newArr = []; for (let i = 0; i < arr.length; i++) { newArr[i] = fn(ar ...
- wepy2.0中使用vant-weapp组件
npm i vant-weapp -S --production 在项目下的package.json下看是否有了vant字段 最最最重要的,在引入的时候通过module映入 <config> ...
- 关于google开源的Material Design说明
原文地址:https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/wiki/Getting-Started 源码地址:h ...
- 二、LinkList及其源码解析
1.链表介绍 链表是一种物理单元上非连续,非顺序的存储结构.链表由一系列的姐点组成,结点可以在运行时动态生成.每个结点包含两个部分,一个是存储数据元素的数据域,一个是存储下一个结点的指针域 双链表是链 ...
- vs 调试时 QuickWatch 不能计算变量值
尝试下这个方法:DEBUG- -> Options and Settings--> Symbols中查看缓存路径是否设置为当前程序的bin文件然后将Debug-->Options a ...
- 安卓开发之利用XmlPullParser解析XML文件
package com.lidaochen.phonecall; import android.support.v7.app.AppCompatActivity; import android.os. ...