Javascript 有两中类型:原始类型和对象类型。

原始类型包括:数字,字符串,布尔值,null和undefined。其余的都是对象类型。

原始类型

数字。Javascript采用IEEE754标准定义的64为的浮点格式表示数字。实际操作则是基于32位整数。

字符串是一组由16位值组成的不可变的有序序列。只要引用字符串的属性,Javascript就会将字符串值通过调用new String(string_name)的方式转换成对象,这个对象继承了字符的方法,并被用来处理属性的引用。比如:

var s="hello world";
var word=s.subString(s.indexOf(" ")+1, s.length);//使用字符串的属性,当引用结束时,新创建的对象就会销毁
<pre name="code" class="javascript">var s="test";
s.len=4;
var t=s.len;
alert(t);//输出undefined , 在读取字符串、数字和布尔值的属性值或方法时,表现的像对象一样,但是如果对其进行赋值,则会忽略:修改只是发生在临时对象身上,而这个临时对象并未继续保留下来

var s="test";
var s1=new String(s);
s1.len=4;
var t=s1.len;
alert(t);//输出4
alert(s==s1);//true
alert(s===s1);//false
alert(s.toUpperCase());//TEST 
alert(s);//test原来的字符串并没有改变,上面输出的是一个新的临时的字符串

布尔值只有两个值,true和false。

null是一个特殊的值用来描述“空”,是一个特殊的对象值,含义是“非对象”,但实际上用来表示数字、字符串和对象是“无值“的。

undefined用来表示更深层次的”空值“,表示变量没有初始化,要是查询对象属性或者数组元素的值时返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值则返回undefined。undefined是预定义的全局变量,它的值是”未定义“。

对象类型

对象是属性的集合,每个属性都由“名/值对”(值可以是原始值,也可以使对象)构成。还有一个特殊的对象----函数。函数是与它相关联的可执行代码的对象,通过可执行函数来运行代码。对于Javascript函数来讲,最重要的是,它们都是真值,并且Javascript可以将它们当作普通对象来对待。如果函数用来初始化一个新建的对象,我们称之为构造函数。每个构造函数定义了一类对象-----有构造函数初始化的对象组成的集合。类可以看作是对象类型的子类型。Javascript核心语言定义了数组类(Array)、函数类(Function)、日期类(Date)、正则类(RegExp)、错误类(Error)。
Javascript对象是一种复合值:它是属性或者已命名值的集合。通过”."符合来引用属性值。当属性值是一个函数的时候,称其为方法。

Javascript有自己的内存管理机制,可以自动对内存进行回收。Javascript是一种面向对象的语言。这意味这我们不用全局的定义函数去操作不同类型的值。数据类型本身可以定义方法来使用值。
Javascript变量是无类型的,变量可以被赋予任何类型的值。使用var关键字来声明变量。采用词法作用域,不在任何函数内声明的变量是全局变量,全局可见;在函数内声明的变量是局部变量,只在声明的函数内可见。

比较

原始值的比较是值的比较。
对象的比较是非值的比较,即使两个对象包含同样的属性及相同的值。各个索引元素完全相等的两个数组也不相等。对象值都是引用。当且仅当引用同一个基对象时,它们才相等。

转换

对象转换为布尔值非常简单:都是true。
对象转为字符串比较复杂。所有的对象继承了两个转换方法。第一个是toString(),它的作用是返回一个反映这个对象的字符串。另一个是valueOf(),如果存在任意原始值就默认将对象转换为原始值,否则返回对象本身。
空数组会被转换为 数字0,单个元素的数组会转换为一个数字。数组继承了默认的valueOf()方法,找个方法返回一个对象而不是一个原始值,因此数组到数字的转换则调用tostring()方法。空数组转换为空字符串,空字符串转换为 0。

变量声明

变量的作用域是变量声明时的区域。在函数体内,局部变量的优先级高于全局变量。
作为属性的变量,实际上使定义了全局对象的一个属性。当使用var声明一个变量时,创建的这个属性时不可配置的,无法通过delete运算符删掉。


作用域链



操作符

按位与 &
按位或 |
按位异或 ^
按位非 ~
左移 <<
右移 >>
无符号右移 >>>


instanceOf




版权声明:本文为博主原创文章,未经博主允许不得转载。

Javascript类型的更多相关文章

  1. javascript类型与类型检测

    1.javascript类型: 注:包装对象:如"hello".length实际为js为我们隐式创建了一个String临时对象,去调用该对象的length属性,调用过后再将该临时对 ...

  2. javascript类型注意事项

    以下是javascript类型的注意事项: null:表示尚未存在的对象,注意,尽管尚未存在,也是个对象啊,所以用typeof检测一个null值变量的结果是Object:不过,为了便于写if语句,在j ...

  3. 谈谈JavaScript类型检测

      javascript内置的类型检测机制并非完全可靠.比如typeof操作符,并不能准确的判断数据是哪个类型,比如:数组和对象就不能通过typeof来区分. typeof [] ==="o ...

  4. Javascript类型检测

    原地址 http://www.cnblogs.com/fool/archive/2010/10/07/javascrpt.html 开门见山,我们先来看一下代码: var is = function ...

  5. JavaScript 类型浅解

    对于JavaScript 类型,可简单地概括为:相对于强类型语言来说,它是弱(松散)类型的语言:有基本类型和引用类型,他们是区别是一个有固定空间存在于栈内存中,一个没有固定空间保存在堆内存中并且在栈内 ...

  6. JavaScript类型和语法

    JavaScript类型和语法 一.类型 1.内置类型(null.undefined.boolean.number.string.object.symbol(es6中新增))(除对象之外,其它统称为基 ...

  7. JavaScript权威设计--JavaScript类型,值,变量(简要学习笔记三)

    1.负号是一元求反运算 如果直接给数字直接量前面添加负号可以得到他们的负值     2.JavaScript中的运算超出了最大能表示的值不会报错,会显示Infinity. 超出最小也不报错,会显示-I ...

  8. JavaScript类型判断instanceof与typeof对比

    经常有人会在JavaScript里写如下的方法: function checkType() { var s1 = 123; var s2 = "OK"; if (s1 instan ...

  9. JavaScript –类型之我晕

    每次写博我觉得取上恬当的题目比整篇行文都难,词量有限的情况下突然想到JavaScript拾遗应该会是一个非常文艺而夺目的博文题目,但我并没有急着使用,经验告诉我应该先去搜一下看有没有被用过.果不其然, ...

  10. JavaScript类型判断

    几种方法:typeof,instanceof,Object.prototype.toString,constructor,duck type ES6引入了一种新的原始数据类型Symbol,表示独一无二 ...

随机推荐

  1. 网络数据包收发流程(二):不配置NAPI的情况

    一.no NAPI 数据结构不配置NAPI的时候,网络设备不使用自己的napi_struct结构,所有网络设备驱动都使用同一个napi_struct,即cpu私有变量__get_cpu_var(sof ...

  2. android 镜像源

    Android SDK在线更新镜像服务器 中国科学院开源协会镜像站地址: IPV4/IPV6: mirrors.opencas.cn 端口:80 IPV4/IPV6: mirrors.opencas. ...

  3. Selenium定位一 --单个元素定位方法

    Selenium-Webdriver 提供了强大的元素定位方法,支持以下三种方法. 单个对象的定位方法 多个对象的定位方法 层级定位 定位单个元素在定位单个元素时,selenium-webdriver ...

  4. [BZOJ 3503][Cqoi 2014]和谐矩阵

    我觉得这一题的样例输出一点都不和谐,大家千万别像我一样被坑了…… 题目不算难,果然是进错省系列555,不过搞出 O(n*m*2m) 的还是不要挣扎的比较好 我们暴力地推出第 n 行 第 m 列中每个数 ...

  5. 几个排序算法的python实现

    几个排序算法     几个排序算法 几个排序算法 冒泡排序 选择排序 插入排序 快速排序 quick sort 冒泡排序 冒泡排序是比较简单的排序方法,它的思路是重复的走过要排序的序列,一次比较两个元 ...

  6. 10-Java 网络通信

    (一) Java中的XML操作 1.XML数据格式简介: (1)XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结 ...

  7. php开发api接口

    做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...

  8. [solr] - 索引数据删除

    删除solr索引数据,使用XML有两种写法: 1) <delete><id>1</id></delete> <commit/> 2) < ...

  9. 【转载-好文】使用 Spring 2.5 注释驱动的 IoC 功能

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 原文链接:https://www.ibm.com/developerworks/cn/java/j-lo-spring25 ...

  10. [网络] 用 OpenVPN 实现站对站 VPN 服务

    一.简介 一般情况下站对站 VPN 是用 cisco.juniper.h3c等品牌的专业设备实现的,这些设备性能可靠,价格较贵. 如果现有设备不支持,而且不能用新设备替换,或者部门预算有限,那么只能用 ...