js基础知识易错点(一)
最近替另一个项目招人,要求基础知识好,随便问了一些基础题,发现了一些易错的点,总结一下。
1、判断一个空数组
var arr = [];
1)JSON.stringify(arr) == "[]"
2)arr instanceof Array && arr.length == 0
3)Array.prototype.isPrototypeOf(arr) && arr.length == 0 测试一个对象是否在另一个对象的原型链上
注意:此处要注意,单纯判断空对象的布尔值时,为true,但是当arr == true的结果为false。
因为,Number(arr)的值为0,当arr == true的判断时,会都转成number类型再进行判断,相当于0 == 1 ,所以为false。
2、判断一个空对象
var obj = {};
1)JSON.stringify(obj) == "{}";
2)Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length == 0;
Object.keys(obj)返回一个数组,值为对象中的各个key,但该方法有兼容性问题,IE9以下不支持。IE9以下可以使用for in方法代替,但注意,它会将原型链上的属性也枚举出来,因此添加obj.hasOwnProperty(key)进行自身属性的判断,如果此为真,则为非空对象,若为假,则为空数组。
3)$.isEmptyObject(obj) 此方法为jquery的方法,原理也是for in遍历
注意:原型链上的属性也是可以被枚举的,因此使用时,最好和obj.hasOwnProperty(key)一起使用
js基础知识易错点(一)的更多相关文章
- C++基础知识易错点总结(2)
1. 若一组待排数据有序,花费时间最多的是:快速排序,T(n)=O(n^2): 2. 有 1000 个无序的整数,希望使用最快的方式找出前 50 个最大的,最佳的选择是? 快速排序:在最理想的情况下, ...
- C++基础知识易错点总结(1)
1. 在C++中,不能被重载的运算符有: sizeof . 成员运算符 .* 成员指针运算符 :: 作用域运算符 ?: 条件运算符 2. C++语言多态性:编译时多态和运行时多态: 编译时多态可通过函 ...
- [JS复习] JS 基础知识
项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display :inline or bloc ...
- HTML+CSS+JS基础知识
HTML+CSS+JS基础知识 目录 对HTML+CSS+JS的理解 基础知识 对HTML+CSS+JS的理解 基础知识 插入样式表的三种方式 外部样式表:<link rel="sty ...
- Node.js基础知识
Node.js入门 Node.js Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设在POSIX环境下运行 ...
- 网站开发进阶(十五)JS基础知识充电站
JS基础知识充电站 1.javascript alert弹出对话框时确定和取消两个按钮返回值? 用的不是alert对话框,是confirm confirm(str); 参数str:你要说的话或问题: ...
- NodeJs>------->>第三章:Node.js基础知识
第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info 方法 console.log(" node app1.js 1> ...
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- js基础知识--BOM
之前说过,在js的 运行环境为浏览器时,js就主要有三部分组成: ECMAScript核心语法.BOM.DOM.今天就和大家详细说一下BOM的一些基础知识. BOM BOM通常被称为浏览器对象模型,主 ...
随机推荐
- 当前标识没有对“C:\WINDOWS\Microsoft.NET\...”的写访问权限的解决办法
1.需要重新注册IIS服务扩展,在开始运行中输入以下命令运行:aspnet_regiis -i 32位的Windows: --------------------------------------- ...
- Aras SP9前端传递参数给后端方法使用
//前端JSvar doc = top.aras.createXMLDocument(); doc.loadXML("<body/>"); doc.documentEl ...
- 毕业设计——Django表单重复提交问题
1. 先记录一些正常情况:在填写表单页面(如注册.登录页面)时刷新页面时数据清空是正常的,此时就是重新发送了一个页面请求. 2. 问题一:用户登录后,刷新登陆后的页面(如首页)时会出现表单重复提交问题 ...
- 【译】索引进阶(七):SQL SERVER中的过滤索引
原文链接:传送门. To be continued...
- win10下安装Cygwin配置gcc编译环境
首先要说明的是,我个人安装cygwin的用途是为了使用kenlm工具训练通及语言模型. 注:统计语言模型工具有比较多的选择,目前比较好的有srilm以及kenlm,其中kenlm比srilm晚出来,训 ...
- css 生成图片添加的十字
<span class="add" title="继续上传"></span> .add { display: inline-block; ...
- 一, Python 一次性多行打印多个变量
>>> n = 123 >>> f = 456.789 >>> s1 = 'hello ,world' >>> s2 = 'he ...
- LeetCode 21. Merge Two Sorted Lists(c++)
要定义两个链表 判断时依次对应每一个链表的值进行判断即可. /** * Definition for singly-linked list. * struct ListNode { * int val ...
- Java数组的声明和遍历
Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如 n ...
- Lesson 1-2
1.5 模块 模块可视为扩展,通过将其导入可以扩展python的功能.python中自带有一组模块,也称为“标准库”. 1.5.1 模块的导入:import + 模块名称 • 使用关键字import导 ...