1、callee属性 和 caller属性。

区别:两者的调用对象不同

arguments.callee:指向拥有这个arguments对象的函数,在递归运算中经常用到。

functionName.caller:在函数中通过函数名来调用,这个属性中保存着调用当前函数的函数引用。functionName也可以使用arguments.callee来代替 。

function out(){
console.log(arguments.callee);
}
out(); // ƒ out(){console.log(arguments.callee);} 
function out(){
inner();
}
function inner(){
console.log(arguments.callee.caller)
}
out(); // ƒ out(){inner();}

2、arguments.length 和 function.length

区别:很明显,调用这个属性的对象不同。arguments.length表示调用函数时实际传递的参数个数,有可能与函数定义时设置的参数个数不同。function.length表示函数希望接收的参数个数即定义函数时声明的形参的个数。

function test(a,b){
console.log('arguments.length = '+arguments.length);
console.log('函数test.length = '+test.length);
}
test(1,2,3,4); // arguments.length = 4, 函数test.length = 2

3、在ECMAscript5中,prototype属性时不可枚举的,因此使用for-in无法获取该属性的值。

4、apply方法和call方法

这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体this对象的值。

区别:主要是除了第一个参数之外的其他参数类型不同。apply接收arguments对象和数组,call只能逐个传入参数。

function sum(num1,num2){
return num1 + num2;
}
function callSum1(num1,num2){
return sum.apply(this,arguments); // 传入arguments对象
}
function callSum2(num1,num2){
return sum.apply(this,[num1,num2]); // 传入数组
}
function callSum3(num1,num2){
return sum.call(this,num1,num2); //逐个列举参数
}
console.log(callSum1(10,10)); //
console.log(callSum2(10,10)); //
console.log(callSum3(10,10)); //

5、typeof 和 instanceof

这两个操作符都可以用来检测类型,但是typeof只能检测基本数据类型,比如:字符串、数值、布尔值、undefined等,如果变量是一个对象或者null,使用typeof只会返回“object”。

使用instanceof可以知道检测的值是什么类型的对象。

var num = 1;
var str = 'hello';
var b = true;
var u;
var n = null;
var arr = [1,2,3]; console.log(typeof num); //number
console.log(typeof str); // string
console.log(typeof b); // boolean
console.log(typeof u); // undefined
console.log(typeof n); // object
console.log(typeof arr); // object
console.log(arr instanceof Array); // true

6、document.documentElement.scrollTop 和 document.body.scrollTop

页面具有 DTD(或者说指定了 DOCTYPE)时,使用 document.documentElement。
页面不具有 DTD(或者说没有指定了 DOCTYPE)时,使用 document.body。
为了兼容,可以使用如下代码:

var scrollTop = document.documentElement.scrollTop || document.body.scrollTop 

不断学习,不断完善中~~~

JavaScript易混淆的零碎知识点积累的更多相关文章

  1. K8S核心概念之SVC(易混淆难理解知识点总结)

    本文将结合实际工作当中遇到的一些问题和情况来解析SVC的作用以及一些比较易混淆和难理解的概念,方便日后工作用到或者遗忘时可以直接在自己曾经学习总结的博客当中直接查找到. 首先应该清楚SVC的作用是什么 ...

  2. JavaScript易混淆知识点小回顾--数组方法与字符串方法;

    数组属性: arr.length;查看数组的长度 arr.Pop;删除数组最后一个元素; 数组的方法: arr.push();添加到数组末端; arr.shift();删除数组的第一个元素; arr. ...

  3. javascript易混淆的split()、splice()、slice()方法详解

    很多时候,一门语言总有那么些相似的方法,容易让人傻傻分不清楚,尤其在不经常用的时候.而本文主要简单总结了JavaScript中的关于字符串和数组中三个容易混淆的方法.旨在方便查阅,在容易混淆的时候有据 ...

  4. js易犯错误与易混淆的重要知识点

    一:作用域的问题 简单案例1: var a = 1; var n = function () { console.log(a); var a=2; } n(); =>输出undefined原因: ...

  5. C#中易混淆的知识点

    C#中易混淆的知识点 一.引言 今天在论坛中看到一位朋友提出这样的一个问题,问题大致(问题的链接为:http://social.msdn.microsoft.com/Forums/zh-CN/52e6 ...

  6. JavaScript中易混淆的DOM属性及方法对比

    JavaScript中易混淆的DOM属性及方法对比 ParentNode.children VS Node.prototype.childNodes ParentNode.children:该属性继承 ...

  7. javascript知识点积累

    8年javascript知识点积累   08年毕业就开始接触javascript,当时是做asp.net发现很多功能用asp.net控件解决不了,比如checkbox单选,全选问题,自动计算总价问题, ...

  8. Java-web易混淆知识点整理

    Java-web易混淆知识点 post和get区别 post: 数据不会显示在地址栏 安全 大小无限制 可以提交二进制文件 get: 数据显示在地址栏 不安全 get方式提交有大小限制(约4kb) 相 ...

  9. JavaScript易错知识点

    JavaScript易错知识点整理1.变量作用域上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. 上方的函数作用域中虽然声明并赋值了a,但位于console之下 ...

随机推荐

  1. RabbitMQ集群出现过机器故障,网络异常等故障后,重启无法重新建立集群的终极解决方案

    由于机器掉电,网络故障等原因,RabbitMQ整个集群出现问题.重启RabbitMQ时,发现某些机器始终无法重新加入到集群中,而且还可能出现网络分区. 针对不同情况,可能选择 rabbitmqctl ...

  2. 普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎。。。。。 测试。。测试。。。没刷过微博。屯里来的。看看啥效果

    普天同庆,微博开通,从今以后,努力用功! 狗屎一样的顺口溜!Q狗屎!!狗屎..... 测试..测试...没刷过微博.屯里来的.看看啥效果

  3. vue css背景图片打包后路径问题

    limit,代表如果小于大约4k则会自动帮你压缩成base64编码的图片,否则拷贝文件到生产目录 name,后面是打包后的路径: loader,后面 limit 字段代表图片打包限制,这个限制并不是说 ...

  4. Golang的数组

    Golang数组 package main import "fmt" func main() { // 定义一个长度为10,元素类型为string的值 li2 := [10]str ...

  5. 【leetcode】475. Heaters

    problem 475. Heaters solution1: class Solution { public: int findRadius(vector<int>& house ...

  6. redis的LRU算法(一)

    最近加班比较累,完全不想写作了.. 刚看到一篇有趣的文章,是redis的作者antirez对redis的LRU算法的回顾.LRU算法是Least Recently Used的意思,将最近最少使用的资源 ...

  7. Visual C++ 6.0中if语句的常见问题

    # include <stdio.h> int main (void) { > )//如果在第四行加分号的话,编译的时候就会在第六行出错 printf("你好\n" ...

  8. 记一次H5页面卡死的BUG

    之前有次开发小程序内嵌页面,类似于网易星球那种,很多钻石可以手动点击收取. 该页面css动效非常多,几乎页面上除了纯色背景之外全部有动效. 也正因为如此,才做成了小程序内嵌的形式(太大了). 当多次快 ...

  9. IDT表连接

    一.table A为基础表,左外连接table B,若要限制B的条件,需加(+),否则会对结果集以B表的条件进行过滤. DWD_REASON_CODE.CODE(+)=DWR_EDA_CL_TST_D ...

  10. creator Box2d的相关物理问题

      项目的屏幕配置为 1152*640,没有对这个数值调整来测试质量的除数1024会不会变化 m = h * w / 1024 (m 质量,h 物体高度,w 物体宽度) g = 0, -320 ( ( ...