原始值与引用值

在ECMAScript 中,变量可以存放两种类型的值,即原始值和引用值。

原始值(primitive value)是存放在栈(stack)中的简单数据字段,也就是说,它们的值直接存储在变量访问的位置。 引用值(reference value)是存储在堆(heap)中的对象,也就是说,存储在变量出的值是一个指针(point),指向存储对象的内存处。

原始类型

ECMAScript 中有5种原始类型,即UndefinedNullBooleanNumber和 String。ECMAScript把术语类型定义为一个集合,每种原始类型定义了它包含的值的范围及其字面量表示形式。ECMAScript 提供了typeof 运算符来判断一个值是否在某种范围内。

typeof运算符

typeof 运算符有一个参数,即要检查的变量或值。例如:

var sName = “zhangsan;alert(typeof sName); //output stringalert(typeof 88); //output number

对变量或值调用typeof运算符将返回下列值之一:

undefined,如果变量是Undefined型的 boolean,如果变量是Boolean型的 number,如果变量是Number型的。 string,如果变量是String型的。 object,如果变量是一种引用类型或Null类型的。

Undefined类型

Undefined 类型只有一个值,即undefined。

undefined值一般有三种情况:

声明的变量未初始化值 未声明的变量 函数无明确返回值时

声明的变量未初始化

当声明的变量未初始化时,该变量的默认值为undefined。

var sName;alert(typeof sName); alert(sName == undefined);

前面声明的sName,没有初始值。该变量将被赋予undefined,即Undefined类型的字面量。

未声明的变量

当使用一个未声明的变量时,变量的默认值为undefined。

var sName;alert(typeof sName); // output undefinedalert(typeof sAge); // output undefined

未声明的变量,默认值会给undefined

函数无明确返回值时

当函数无明确返回值或无返回值时,返回的为undefined

function testFunction() {
// no return
}

例如

function testFunction() {
return;
}alert(testFunction == undefined); // output “true”

Null 类型

Null类型的值只有一个null,即它的字面量。值undefined实际上由null派生而来,因此ECMAScript把它们定义为相等。

alert(null == undefined); // output true

尽管这两个值相等,但它们的含义不同。Undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数或方法要返回的是对象,那么找不到对象时,返回的通常是null。

Boolean类型

Boolean 类型是ECMAScript 中最常用的类型之一。它有两个值true 和false。在一些情况下,0 也可以被转换为false。

Number 类型

Number型的数字既可以表示32位的整数,也可以表示64位的浮点数。直接输入的任何数字都被看作Number型的字面量。

var iNum = 123;

整数可以被表示为八进制或十六进制的字面量。

八进制字面量的首数字必须是0,其后的数字可以是任何八进制数字(0到7)。

var iNum = 070; // 070 is equals 56 in decimal

要创建十六进制的字面量,首位位数必须是0,其后接字母x,然后是任意的十六进制数字(0-9A-F)。这些字母可以是大写的,也可以是小写的。

var iNum1 = 0x1f; // 31var iNum2 = 0x2B; // 43

尽管所有整数都可表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果。

String 类型

String 类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储0或更多的Unicode字符,由16位整数表示(Unicode是一种国际字符集)。

字符串中的每个字符都有特定的位置,首字符从位置0开始,第二个字符在位置1,依次类推。字符串最后一个位置的位置是字符串的长度减一。

hello

这个字符串的长度为5

h 为第0个字符,e 为第1个字符,最后一个字符o为第4(即字符串长度5 减去 1)个字符

字符串字面量可以由双引号(”)或单引号(’)声明。

例如,下面的两行都是有效的声明:

var sColor1 = blue;var sColor2 = 'blue';

WEB前端学习四 js什么是原始类型相关推荐

  1. 深圳Web前端学习:js中的模块化--【千锋】

    深圳Web前端学习:js中的模块化–[千锋] 0.前言 我们知道最常见的模块化方案有CommonJS.AMD.CMD.ES6,AMD规范一般用于浏览器,异步的,因为模块加载是异步的,js解释是同步的, ...

  2. Web 前端学习 之js概述

    Web 前端学习 之js概述 1.JavaScript 介绍 Javascript 语言诞生主要是完成页面的数据验证.因此它运行在客户端,需要运行浏览器来解析执行JavaScript 代码. JS 是 ...

  3. WEB前端学习二 JS作用域和作用域链

    先上三段说明作用域的代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3 ...

  4. WEB前端学习五 js什么是引用类型

    js中的数据类型有以下几种: Number   Boolean   undefined     Object   Function    String  Null 基本类型:Number Boolea ...

  5. WEB前端学习一 JS预解释

    javascript 的预解析:(个人理解)就是js代码在执行之前 会在相应的执行环境中 预先把 一些东西解析到内存.如果理解错误,请多多指正 一. 那究竟预先解析哪些东西那??答:预先解析 func ...

  6. WEB前端学习六 js什么是闭包

  7. js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...

    好程序员web前端学习路线分享HTML5常见面试题集锦,接下来将会持续为大家分享几篇HTML5常见面试题. 1.布局 左边20% 中间自适应 右边200px 不能用定位 答案:圣杯布局/双飞翼布局或者 ...

  8. web前端学习基础教程,简单的图片旋转木马自动轮播js代码

    一款简单的图片旋转木马自动轮播js代码,图片叠加轮播切换效果,支持点击左右箭头按钮控制切换. 案例效果图 案例源码: <!DOCTYPE html> <html lang=" ...

  9. web前端学习中CSS,JS代码压缩

    web前端要学习的知识有很多,前端基础要学习三个部分:HTML,CSS,JavaScript(简称JS),因此首先明确三个概念:HTML负责结构,网页想要表达的内容由html书写. CSS负责样式,网 ...

最新文章

  1. 组合求解器 + 深度学习 =?这篇ICLR 2020论文告诉你答案
  2. IDA 7.5 Demo 包含 Windows、Linux、macOS
  3. 上传附件的格式和大小限制
  4. Leaflet JS add GeoJSON shape as a hole in a polygon(外多边形内有内多边形)
  5. Vmware虚拟机使用Nat方式连接笔记本无线网卡
  6. android 渲染 控件,自定义控件被忽略的渲染性能
  7. BIM族库下载——Revit配景族
  8. DIY01_NE555叮咚门铃
  9. 49 张图详解 WiFi 的 26 个知识点
  10. 智能云输入法 卸载残留问题
  11. PayPal全力助推中国商家开拓海外市场
  12. jar脱壳_软件脱壳 - Rannie` - 博客园
  13. javafx 教程_集成JavaFX和Swing(修订版)
  14. 电子电路学习笔记(11)——滤波电容
  15. JAVA Integer取值范围问题
  16. 普通管理类程序开发之难度系数、层次之说法
  17. 职场必知必会:PPT 制作六步心法分享
  18. 深入了解人工智能的主要缺点
  19. 1602液晶显示摄氏度
  20. 上新|设计开发在线协同工具墨刀「设计画布」全新发布

热门文章

  1. tf.Variable 和 tf.get_variable的区别(2)
  2. 数字图像处理--几种图像均值滤波的java实现
  3. spark数据处理示例一:分类
  4. 剑指offer 合并2个排序的链表
  5. Elasticsearch对地理数据查询(一)
  6. 分类模型与排序模型在推荐系统中的异同分析
  7. XGBoost的PU-Learning
  8. mysql运维管理-mysqldump 备份与恢复数据库20
  9. linux 启动流详解
  10. lua 初接触 --- The first time use Lua for programing