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. 从n个数中随机选出k个数,并判断和是不是素数

    洛谷p1036 #include<iostream> #include<math.h> using namespace std; ],n,k;//依照题目所设 bool isp ...

  2. nginx——优化 Nginx access 日志

    1. 配置日志切割 #!/bin/bash savepath_log='/usr/local/clogs' nglogs='/usr/local/nginx/logs' mkdir -p $savep ...

  3. LXC vs Docker

    https://www.sumologic.com/blog/code/lxc-lxd-explaining-linux-containers/ see also: https://linuxcont ...

  4. ul li data-* 数据的读取

    <ul class="questions"> <li> <div class="question">1.您的年龄是?< ...

  5. Invoker-n颜色涂m个珠子的项链

    参考https://blog.csdn.net/anxdada/article/details/76862564. https://blog.csdn.net/baidu_35643793/artic ...

  6. iOS开发,改变系统铃声音量和静音,并非媒体播放音量

    使用AVSystemController可以改变系统声音,而且是铃声,并非媒体播放的声音. 它可以让iPhone手机静音.但是,AVSystemController存在于私有Celestial框架中. ...

  7. git教程:工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工 ...

  8. QWaitConditioin的思考1

    16:50:392017-03-31 本文章为原创,如若引用请指明出处,否则追责. 以 生产.消费者的例子说明 #include <QtCore/QCoreApplication>#inc ...

  9. ps 处理gif

    ps打开gif后,做了修改(去掉了背景色),但之后发现本来是动图的gif不动了. 解决该问题需要注意两点: 一:保存时,要选择保存为web格式 二:在ps中打开时间轴,在时间轴中选中某一帧时,只能有多 ...

  10. 20155219付颖卓《网络攻防》Exp4 恶意代码分析

    一.基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪些,用什么方法来监控. 可以用window7自带的schtasks ...