JavaScript学习总结(二、隐式类型转换、eval())
一、(避免)隐式类型转换
console.log(false == 0); //logs true;
console.log(false === 0); //logs false;
console.log("" == 0); //logs true;
console.log("" === 0); //logs false;
因此,比较值和表达式类型时,始终使用 === 和 !== 。
二、eval()
1. 容易出错,因此避免使用eval()。eval()接受任意的字符串,并当作javascript代码来处理。
2. 大部分情况下,给setInternal()和setTimeout(),以及Function()构造函数传递字符串时,与eval()是类似的。应该避免。
3. 在必须使用eval()的情况下,可以使用new Function()来代替,或者封装eval()调用到一个及时函数中去。
例1:
console.log(typeof a); //logs undefined
console.log(typeof b); //logs undefined
console.log(typeof c); //logs undefined
var string = "var a = 1; console.log(a);";
eval(string); //logs "1"
var string = "var b = 2; console.log(b);";
new Function(string); //logs "2"
var string = "var c = 3; console.log(c);";
(function(){
eval(string);
} ());
// logs "3"
console.log(typeof a); //logs number
console.log(typeof b); //logs undefined
console.log(typeof c); //logs undefined
例2:
(function() {
var local = 1;
eval("local = 3; console.log(local);"); //logs 3
console.log(typeof local); //logs number
} ());
(function() {
var local = 1;
Function("console.log(typeof local);") (); //logs undefined
} ());
JavaScript学习总结(二、隐式类型转换、eval())的更多相关文章
- scala学习手记35 - 隐式类型转换
先来看一下下面的内容: 2 days "ago" 5 days "from_now" 如上的内容具体应该是什么呢?不过怎么看也不像是代码.不过既然是在学代码,拿 ...
- JavaScript学习 - 基础(二) - 基础类型/类型转换
基础类型 - 数字类型(Number) 1.最基本的数据类型 2.不区分整型数值和浮点型数值 3.所有数字采用64位浮点格式存储,相当于Java和C语言中double格式 4.能表示的最大值 +- 1 ...
- 「译」JavaScript 的怪癖 1:隐式类型转换
原文:JavaScript quirk 1: implicit conversion of values 译文:「译」JavaScript 的怪癖 1:隐式类型转换 译者:justjavac 零:提要 ...
- JavaScript 隐式类型转换
JavaScript 隐式类型转换 原文:https://blog.csdn.net/itcast_cn/article/details/82887895 · 1.1 隐式转换介绍 · 1.2 隐式转 ...
- javascript的隐式类型转换
首先简单了解js的typeof,会返回六种类型 即 number string boolen function object undefined 也就是六种基本数据类型 显示类型转换大概有以下几种: ...
- 有趣的JavaScript隐式类型转换
JavaScript的数据类型是非常弱的(不然不会叫它做弱类型语言了)!在使用算术运算符时,运算符两边的数据类型可以是任意的,比如,一个字符串可以和数字相加.之所以不同的数据类型之间可以做运算,是因为 ...
- Javascript显示和隐式类型转换
1.转换成字符串 多数的JavaScript宿主环境(比如Node.js和Chrome)都提供了全局函数toString: 与此同时Object.prototype也定义了toString方法,使得所 ...
- JavaScript显式类型转换与隐式类型转换
隐式类型转换 四则运算 判断语句 toString 在 JavaScript 中声明变量不需指定类型,对变量赋值也没有类型检查,同时还允许隐式类型转换. 这些特征说明 JavaScript 属于弱类型 ...
- JavaScript隐式类型转换(详解 +,-,*,/,==)
JavaScript 在 运算 或 比较 之前, 会自动进行隐式类型转换. 下面我们来仔细讲一讲 + - * / == 运算符经历了哪些过程. 类型转换 ECMAScript 运行时系统会在需要时从事 ...
随机推荐
- bootstrap 4 pull-right无效
/********************************************************************** * bootstrap 4 pull-right无效 * ...
- 【图像处理基础】LBP特征
前言 其中dsptian的博客不仅给出了LBP的实现,还计算了LBPH,计算LBP过程中有点小瑕疵,评论中有给出修改方法.除了使用power还可以使用bitxor函数实现. lbpcode = bit ...
- 纯C:AES256
尼玛的WordPress把格式全搞乱了 aes256.h #ifndef _AES256_H_ #define _AES256_H_ #include <stdio.h> #include ...
- CentOS7为firewalld添加开放端口及相关操作
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...
- HDU 1000
A + B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 2017.8.23 shell判断文件,目录是否存在或者具有权限
#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数 ...
- (20)模型层 -ORM之msql 基于双下划线的跨表查询(一对一,一对多,多对多)
基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Autho ...
- 【BZOJ2229】【ZJOI2011】最小割
冷门知识点…… 原题: 小白在图论课上学到了一个新的概念——最小割,下课后小白在笔记本上写下了如下这段话: “对于一个图,某个对图中结点的划分将图中所有结点分成两个部分,如果结点s,t不在同一个部分中 ...
- Java-简单的计算器(只能进行加法运算)
有两个关键的地方: 其一: JTextField field=new JTextField(10); 这是一个文本输入框,里面的参数10的意思是,这个输入框的长度为10列 其二:点击求和按钮,出结果 ...
- List接口的使用方法
★List接口特点: 1.元素存储有序的集合 2.带索引的集合 3.集合中可以有重复的元素 4.常用的子类有ArrayList , LinkedList ★List接口的方法:add , rem ...