JavaScript Allongé 序幕:值和表达式
42
42
//=> 42
"JavaScript" + " " + "Allonge"
//=> "JavaScript Allonge"
2 === 2
//=> true
'hello' !== 'goodbye'
//=> true
2 === '2'
//=> false true !== 'true'
//=> true
true === false
//=> false 2 !== 5
//=> true 'two' === 'five'
//=> false
值类型
第三,有时,一些杯子的类型没有区分标志,如果它们是同种类型的杯子,其"容量"也相同,我们没有办法分辨它们之间的不同点,这是我们到目前为止所看到的字符串、数值和布尔值的情况。
2 + 2 === 4
//=> true (2 + 2 === 4) === (2 !== 5)
//=> true
注意这些例子中发生的事情:当我们获得一个作为表达式结果的字符串、数值和布尔值时,它与另一个相同类型相同内容的值是相同的,字符串、数值和布尔值是javascript中所谓的“值”或“原始值”的例子。
我们将交替使用这两个术语。
我们还没有遇到第四种可能性,稍微拉伸一下这个比喻,某些类型的杯子底部有一个序列号,所以即便你有两只同种类型相同容量的杯子,你还是能区分它们。
引用类型
所以在javascript中哪种类型的值会是相同类型且相同内容时,但不被认为在相同的呢?我们来看一种在现代编程语言中非常常见的数据结构——数组(其他语言中有时称其为列表或向量)。
数组看起来像这样:[1, 2, 3],这是一个表达式,你可以用"[]"与其他表达式结合起来,诸如:
[2-1, 2, 2+1]
[1, 1+1, 1+1+1]
注意:你总是生成相同内容的数组,但是数组的每一个值与另一个数组的每一个值都相同,他们就同样恒等么?自己试试这些:
[2-1, 2, 2+1] === [1,2,3]
[1,2,3] === [1, 2, 3]
[1, 2, 3] === [1, 2, 3]
怎么样?当你输入[1,2,3]或其任何变体,你正在输入一个不同于其他任何数组的生成了其自身唯一的数组的表达式。即便其他的数组看起来也像[1,2,3],就好像javascript生成两个底部有不同序列号的咖啡杯一样。
数组看起来非常简单,然而“引用”这个词充满了太多的可能性,有一整个章节专门讨论重新绑定与引用。试着输入这个代码:
var ouroboros = [];
ouroboros[0] = ouroboros;
//=> [ [Circular] ]
你正在创建一个ouroborian数组,一个包含本身的数组。
它们看似相同,但如果你用“===”检测,你看到它们是不同的。每次你计算一个表达式(包括输入一些东西)来创建一个数组,你在创建一个新的、不同的值,即便它看起来与某些其他数组的值相同。正如我们所见,许多其他类型的值是如此的,包括函数,这本书的主题。
JavaScript Allongé 序幕:值和表达式的更多相关文章
- 第三章:Javascript类型、值和变量。
计算机程序的运行需要对值(value)比如数字3.14或者文本"hello world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type),编程语言最基本的特 ...
- 前端要给力之:语句在JavaScript中的值
文件夹 文件夹 问题是语句有值吗 那么说你骗我咯 有啥米用呢 研究这个是不是闲得那个啥疼 ES5ES6有什么差异呢 结论是ES6是改了规则但更合理 最后不不过if语句 这两天在写语言精髓那本书的第三版 ...
- JavaScript Allongé 第一呷 :基础函数 (2)
啊!我想要有一个参数 到现在为止,我们已经了解了没有参数的函数.只说我们的函数没有任何参数,甚至还没说参数是什么.大多数程序员非常熟悉参数,中学数学就讨论这个了.所以你知道他们是什么,而我也知道你知道 ...
- JavaScript的基础数据类型和表达式
Java Script的基础数据类型和表达式 基本的数据类型: number(数值)类型:可分为整数和浮点数 string(字符)类型:是用单引号“'”或者双引号“"”来说明的. boole ...
- javascript立即调用的函数表达式N种写法(第二篇)
原文:javascript立即调用的函数表达式N种写法(第二篇) 上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){}) ...
- JavaScript获取当前值
JavaScript获取当前值 1.说明 获取select下拉框中的选中的值以及文本值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD ...
- Javascript获取value值的三种方法及注意点
JavaScript获取value值,主要有以下三种: 1.用document.getElementById(“id名”).value来获取(例1): 2.通过form表单中的id名或者name名来获 ...
- TOJ1302: 简单计算器 && TOJ 4873: 表达式求值&&TOJ3231: 表达式求值
这些都是应用Python的eval函数的一些题目! TOJ1302传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=show ...
- asp.net后台操作javascript:confirm返回值
在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. ( ...
随机推荐
- 未公开函数MessageBoxTimeOut 实现定时消息(ZT) MFC实现MessageBox自动消失
http://www.blogjava.net/baicker/archive/2007/07/13/130072.html #include <windows.h> #include & ...
- 调试windows服务最简单的方法之一
先看一下这段启动代码: using System; using System.Collections.Generic; using System.Linq; using System.ServiceP ...
- Web前端行业的了解
即将从事Web前端的工作的 先对即将从事的行业有个了解. Web前端发展史: 第一个网页诞生于90年代初,早期的网页除了一些小图片和毫无布局可言的标题段落,其全由文字构成.然而随着时代的进步,互联网的 ...
- 自然语言处理:问答 + CNN 笔记
参考 Applying Deep Learning To Answer Selection: A Study And An Open Task follow: http://www.52nlp.cn/ ...
- 记SCOI2017
Day1完挂,OI再见. 居然卡进去了. UESTC的评测机见鬼啊,我本地不到1s.时限是3s的两道题都T了,然后就少了50pt. Day1 T1看完首先O(n^2)DP是裸的,然后感觉n选k好像不能 ...
- PBE加密算法
这是我参加全国信息安全大赛的设计的加密系统中的一个加密算法,虽然比赛的结果不是非常理想但是,我还是学到了很多东西,现在和大家分享一下,比赛收获的东西. 基于口令加密 PBE(Password Base ...
- docker 学习(四) springboot + docker
下面演示: 在Windows上新建一个简单的Springboot工程,生成docker iamge,然后在本地的docker上运行: (1):登录到 https://start.spring.io/, ...
- c++重载输入输出运算符
1 最好打断点看看哦 2例子 #include <iostream> using namespace std; class Complex2 { public: Complex2(, ) ...
- JSONObject put List<Double> 后转化为String问题的解决办法
//原代码 JSONObject powerCurveJsonObj = new JSONObject(); powerCurveJsonObj.put("test",[0.5, ...
- 《剑指offer》面试题16—反转链表
Node* p1 p2 p3 思路:开始时,p1为NULL,p2=phead,p3=p2—>next.使p2—>next = p1,然后使p1=p2,p2=p3.如果只有1个结点则此时 ...