介绍JavaScript中的四个陷阱
来源:互联网 发布:finale mac 编辑:程序博客网 时间:2024/05/16 01:20
介绍JavaScript中的四个陷阱。
1. 动态类型
JavaScript是一种松散类型的语言。换句话说,不需要提前声明存在变量中的数据是什么类型。Java(与JavaScript完全不一样)等其他语言都要求提前声明变量类型,比如 int、float、boolean或String
//在Java中声明变量
int number = 5;
float value = 12.3564;
boolean active = true;
String text = "hello";
而JavaScript则会根据赋给变量的数据,自动推断类型。(注意,''或""表示字符串。双引号或单引号都可以表示字符串)
//在JavaScript中声明变量
var number = 5;
var value = 12.3564;
var active = true;
var text = "hello";
好讨厌,怎么那么多var!不过有方便的地方:不知道保存什么数据,就可以声明和命名变量。甚至可以随意改变保存的数据类型,JavaScript也不会怪你的:
var value = 100;
value = 99.9999;
value = false;
value = "hello";
这里需要提醒的是,如果不小心在一个数值变量里存了一个字符串,后来代码就出现了一些奇怪的问题,时候就需要好好反省下。如果不确定某个变量中保存着什么类型的数据,可以使用typeof操作符:
typeof 67; //返回"number"
var myName = "hello";
typeof myName; //返回 "string"
2. 变量提升
在我们的印象中,浏览器会从上到下依次执行JavaScript代码。但是有时候一定!比如,下面这些代码,你觉得变量i什么时候会有定义?
var numLoops = 100;
for(var i = 0 ; i < numLoops ; i ++){
console.log(i);
}
在其他的很多语言中,i会到for循环开始的时候才会被声明,这符合我们的预期。但是由于存在一种叫做变量提升的机制,JavaScript中的变量声明会被提升到函数上下文的顶部。对于前面的例子来说,i实际上在for循环开始之前就有定义了。下面的代码上面的代码是等价的。
var numLoops = 100;
var i;
for(i = 0 ; i < numLoops ; i ++){
console.log(i);
}
- 介绍JavaScript中的四个陷阱
- 注意! JavaScript中的"陷阱"
- JavaScript中的"陷阱"
- 注意! JavaScript中的"陷阱"
- JavaScript 中的陷阱
- JavaScript 中的陷阱
- JavaScript 中的陷阱
- JavaScript 中的陷阱
- Javascript中的陷阱大集合
- Javascript中的陷阱大集合
- JavaScript中的陷阱大集合
- Javascript中的陷阱大集合
- Javascript中的陷阱大集合
- JavaScript中的运算操作陷阱
- Javascript中的陷阱大集合
- Javascript中的陷阱大集合【译】javascript
- JavaScript中for..in循环陷阱介绍
- JavaScript中for..in循环陷阱介绍
- Xcode 7.3.1 的framework的制作之Xib,图片和storyboard的制作
- 并查集(Union-Find) 应用举例 --- 基础篇
- NDK开发-初识NDK
- Jersey发布图片到另一台图片服务器
- Android 信息提示Dialog、Toast和Snackbar
- 介绍JavaScript中的四个陷阱
- java读取数据库数据并导出到EXCEL中
- Python 中的排序
- 解决Cannot change version of project facet Dynamic web module to 2.5
- 深入Java虚拟机之基于栈指令的解释器执行引擎
- Andrew Ng机器学习课程(一) - Python梯度下降实战
- MyBatis-搭建MyBatis开发环境一(MyEclipse版)
- js 去处数组中重复的对象
- LeetCode | Scramble String