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. contos7 go 环境搭建

    安装包下载地址为:https://golang.org/dl/.(网址打不开请FQ) 根据不同系统,选择对应的安装包: 解压安装 1.下载源码包:go1.10 linux/amd64 2.将下载的源码 ...

  2. HashMap(1.8)理解

    先放一个流程图了解一下HashMap的put()操作: 1.HashMap底层采用数组.链表.红黑树来实现. 2.表的长度一定是2^n(便于快速计算hash值和扩展),若初始化时指定容量不满足,则Ha ...

  3. Idea常用功能汇总

    1.格式化代码:Ctrl+Alt+L 2.重命名变量:光标停留在变量上,Shift+F6 3.打开文件或者项目所在目录: 右键>Show in Explorer 4.添加包围代码块的快捷键:Ct ...

  4. liunx centOS6.5安装jdk教程

    第一步:mkdir /usr/java/ --在/usr目录下新建一个java目录 第二步:cp jdk-7u25-linux-x64.rpm /usr/java/ --将JDK文件复制到/usr/j ...

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

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

  6. 移动终端设备ID

    转自:https://wetest.qq.com/lab/view/116.html 一.前言 对于移动端产品的常规统计分析和运营推广,渠道结算来说,能精准的识别区分并且跟踪一台终端设备(一个终端用户 ...

  7. WEB学习笔记10-高可读性的HTML之HTML 语义化

    实现如下所示工具栏: 做到标签语义化,首先要尽量减少使用<div>和<span>这两个标签. 分析:这是一个包含5个无序操作项的工具栏,因此应该使用符合语义的<ul> ...

  8. silverlight 基本信息学习随笔

    Silverlight还处于测试版本阶段 微软 silverlight 是一个跨浏览器.跨平台的插件.为网络带来下一代基于.NETFramework的媒体体验和丰富的交互式应用程序 他是一种新的web ...

  9. 天转凉了,注意保暖,好吗(需求规格说明书放在github了)

    团队项目——AI五子棋(小程序) 一.团队展示: 队名:未来的将来的明天在那里等你 小组 队员: 龙天尧(队长)(3116005190),林毓植(3116005188),黄晖朝(3116005178) ...

  10. js中Array数组的属性和方法

    这是我自己整理出来的一些关于Array数组的属性和方法,即查即用. 1.Array.length属性:数组的项数组,始终返回0或者更大的值. 2.instanceof操作符:value instanc ...