JavaScript中的数据类型
来源:互联网 发布:php trim 编辑:程序博客网 时间:2024/06/13 21:46
最近在学习JavaScript高级程序设计(第三版),做了一些笔记:
5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1 种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。typeof操作符:鉴于 ECMAScript 是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof 就是负责提供这方面信息的操作符。
Undefined类型:
在使用 var声明变量但未对其加以初始化时,这个变量的值就是 undefined,例如:
var message; alert(message == undefined); //true
对未初始化的变量执行typeof 操作符会返回 undefined 值,而对未声明的变量执行 typeof 操作符同样也会返回 undefined 值。来看下面的例子:
var message; // 这个变量声明之后默认取得了 undefined 值 // 下面这个变量并没有声明 // var age alert(typeof message); // "undefined" alert(typeof age); // "undefined"
var message; // 这个变量声明之后默认取得了 undefined 值 // 下面这个变量并没有声明 // var age alert(message); // "undefined" alert(age); // 产生错误,只能对age进行typeof操作。
var name = 'World!';(function () { if (typeof name === 'undefined') { var name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();//输出结果是:Goodbye Jack
这里用到的知识点是变量声明提前:即JavaScript函数里的所有声明(只是声明,但不涉及赋值)都被提前到函数体的顶部,而变量赋值操作留在原来的位置。上面的代码等同于:
var name = 'World!';(function () { var name; if (typeof name === 'undefined') { var name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();
如果去掉函数内的var name = 'Jack'; 由于作用域链的存在,函数内的name就直接用全局变量name = 'World!',此时typeof name的值是'string',而不是'undefined'。
var name = 'World!';(function () { if (typeof name === 'undefined') { console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();//输出结果为:Hello World!
var name = 'World!';(function () { if (name === 'World!') { console.log('Goodbye ' + name); } else { console.log('Hello ' + name); }})();//Goodbye World!
Null类型:
从逻辑角度来看, null值表示一个空对象指针,而这也正是使用 typeof操作符检测 null 值时会返回"object"的原因,如下面的例子所示:
var car = null;alert(typeof car); // "object"
但是
alert(null instanceof Object);//false原因就是null是个特殊的Object类型的值 ,表示空引用的意思 。instanceof表示某个变量是否是某个对象的实例 ,所以为false。
alert(null == undefined); //truealert(null === undefined); //false
Boolean类型:该类型只有两个字面值:true和 false。
Number类型 :
有一个特殊值NaN,即非数值(Not a Number)是一个特殊的数值。 NaN本身有两个非同寻常的特点。首先,任何涉及 NaN的操作(例如 NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN 与任何值都不相等,包括NaN 本身。例如,下面的代码会返回false:
alert(NaN == NaN); //false
ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,例如:
var lang = "Java";lang = lang + "Script";
实现这个操作的过程如下:首先创建一个能容纳10 个字符的新字符串,然后在这个字符串中填充"Java"和"Script",最后一步是销毁原来的字符串"Java"和字符串"Script",因为这两个字符串已经没用了。Object类型 :
ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行 new操作符后跟要创建的对象类型的名称来创建。而创建 Object类型的实例并为其添加属性和(或)方法,就可以创建自定义对象,如下所示:
var o = new Object(); //
阅读全文
0 0
- JavaScript中的数据类型
- JavaScript中的数据类型
- JavaScript中的数据类型
- javascript中的数据类型
- javascript中的数据类型
- javascript中的数据类型---数字
- javascript中的数据类型检测
- 【js】:javascript中的数据类型
- JavaScript中的数据类型
- JavaScript中的数据类型
- JavaScript中的数据类型
- JavaScript中的数据类型
- Javascript中的数据类型
- JavaScript中的数据类型
- JavaScript中的数据类型
- javascript中的数据类型
- javascript中的数据类型转换
- javascript中的数据类型
- rsync服务器搭建,实现自动化备份
- linux expect自动登录s…
- 用shell脚本批量分发公钥,实现用…
- 搭建nfs共享文件系统并用rsync+ino…
- RC4算法
- JavaScript中的数据类型
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力
- Kafka+Storm+HBase项目Demo(2)--Kafka环境搭建
- 复杂ListView实现
- Python:基础知识提要
- Hello,world!第一篇CSDN博客
- C语言考研复习小笔记
- win c# 按装Redis
- face_recognition安装