JavaScript中的"奇奇怪怪"
filter等方法的隐式转化
var list = [1,,2,,0,5,9];
console.log(list[1]); // console: undefined
console.log(list[1] !== null); // console.log: true
list = list.filter(item => item !== null);
// console: [1, 2, 0, 5, 9]
通过prototype骗过引擎
var proto = {};
var obj = Object.create(proto);
function fn() {};
fn.prototype = proto;
console.log(obj instanceof fn);
// console: true
浮点数计算问题
0.1 + 0.2 === 0.3 // false
0.1 + 0.05 === 0.15; // false
0.1 + 0.1 === 0.2; // true
0.1 + 0.3 === 0.4; // true
0.2 + 0.2 === 0.4; // true
0.05 + 0.25 === 0.3; // true
0.15 + 0.15 === 0.3; // true
任何操作数与NaN进行关系比较, 结果都为false
"a" < 3; // false
"a" >= 3; // false
操作未声明变量
var message; // 变量声明之后取得了默认值
// var age;
console.log(message); // console: undefined
console.log(age);
// Uncaught ReferenceError: age is not defined
// 不报错
console.log(typeof message); // console: undefined
console.log(typeof age); // console: undefined
console.log(window.message); // console: undefined
console.log(window.age); // console: undefined
console.log打印
var arr = [1, 2];
console.log(arr); // console 显示[1, 2], 展开后实际没有内容, 长度为0(由于下面for循环的操作)
for(var i=0, len = arr.length; i < len; i++) {
arr.shift();
}
自执行函数
+function() {}()
!function() {}()
-function() {}()
(+function(){}())
new function(){} // 这种写法可以省去最后的一对括号
// 特殊
!function() {return false}()
判断-0
num === -0 // 无法判断是否是-0;因为 0 === -0 也成立
// ES2015 Object.is(value1, value2) 比较两个值是否相同
Object.is(-0, 0); // false
Object.is(NaN, NaN); // true
JavaScript中的"奇奇怪怪"的更多相关文章
- 深刻领悟javascript中的exec与match方法之异同
阅读本文之前,请先看下面一道题: 题目17:Read the following javascript code: var someText="web2.0 .net2.0"; ...
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- JavaScript中的this陷阱的最全收集
JavaScript来自一门健全的语言,所以你可能觉得JavaScript中的this和其他面向对象的语言如java的this一样,是指存储在实例属性中的值.事实并非如此,在JavaScript中,最 ...
- JavaScript中的this陷阱的最全收集 没有之一
当有人问起你JavaScript有什么特点的时候,你可能立马就想到了单线程.事件驱动.面向对象等一堆词语,但是如果真的让你解释一下这些概 念,可能真解释不清楚.有句话这么说:如果你不能向一个6岁小孩解 ...
- JavaScript中的apply和call函数详解(转)
每个JavaScript函数都会有很多附属的(attached)方法,包括toString().call()以及apply().听起来,你是否会感到奇怪,一个函数可能会有属于它自己的方法,但是记住,J ...
- 深入理解Javascript中this, prototype, constructor
在Javascript面向对象编程中经常需要使用到this,prototype和constructor这3个关键字. 1.首先介绍一下this的使用:this表示当前对象;如果在全局中使用this,则 ...
- javascript中的链表结构—从链表中删除元素
1.概念 上一个博文我们讲到链表,其中有一个方法remove()是暂时注释的,这个方法有点复杂,需要添加一个Previous()方法找到要删除的元素的前一个节点,这一个博文我们来分析一下这个remov ...
- 深入理解JavaScript中创建对象模式的演变(原型)
深入理解JavaScript中创建对象模式的演变(原型) 创建对象的模式多种多样,但是各种模式又有怎样的利弊呢?有没有一种最为完美的模式呢?下面我将就以下几个方面来分析创建对象的几种模式: Objec ...
- JavaScript中Eval()函数的作用
这一周感觉没什么写的,不过在研究dwz源码的时候有一个eval()的方法不是很了解,分享出来一起学习 -->首先来个最简单的理解 eval可以将字符串生成语句执行,和SQL的exec()类似. ...
随机推荐
- C++中对C的扩展学习新增语法——const
Const Const在C语言和C++语言中连接属性不一样,C语言默认是外部连接,如果需要内部连接,需要显示写上static.而在C++中默认是内部连接,如果希望其编程外部变量,需要显示写上exte ...
- 一个ip, 两个域名, 两个ssl, 访问多个不同的项目
在前面一篇中说过, 入了好几个坑. 后来使用了nginx+tomcat配置的方式. 终于成功了. 因为头一次使用nginx, 不知道具体怎么操作, 于是我在操作的时候, 按照以下几个步骤执行的: 导航 ...
- pandas的使用(5)
pandas的使用(5)-- 缺失值的处理
- vue中动态加载img
想实现动态加载图片,当点击“首页”时,图片变色 代码如下: <mt-tabbar v-model="selected" fixed class="border-1p ...
- linux运维与实践
1.容器云计算节点负载值高,通过top可以看到Load Average:70.1 71.3 70.8,虚拟机有8个cpu: cpu使用率高导致(R状态)? 同时在top中观察一段时间,消耗cpu最 ...
- 正确理解 PHP 的重载
PHP 的重载跟 Java 的重载不同,不可混为一谈.Java 允许类中存在多个同名函数,每个函数的参数不相同,而 PHP 中只允许存在一个同名函数.例如,Java 的构造函数可以有多个,PHP 的构 ...
- 分享一个撩妹、装13神技能,0基础用Python暴力破解WiFi密码
WiFi密码Python暴力破解 Python密码破解部分截图 获取视频资料,转发此文+点击喜欢,然后获取资料请加Python交流群:580478401,就可以获取视频教程+源码 环境准备: py ...
- python3 之 判断字符串是否只为数字(isdigit()方法、isnumeric()方法)
Isdigit()方法 - 检测字符串是否只由数字组成 语法: str.isdigit() 参数: 无 返回值: 如果字符串只包含数字,则返回True,否则返回False. 实例: 以下实例展示了 ...
- Java数组定义及初始化
数组定义及初始化 数组这玩意是一种用于存放数据最常见数据结构. 数组的的概念及注意点 数组要求所有的数组元素具有相同的数据类型,且只能存在一种数据类型,要多专一有多专一. 数据类型既可以是基本类型也可 ...
- String字符串为什么不可变的深入理解
String是被final修饰的,是不可变对象,那么这句什么意思呢.在学习scala时候var,val时候,就想到这个问题,所以记录下 看案例: package com.cxy; import sun ...