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来完成. ( ...
随机推荐
- 【小程序】bindconfirm点击小键盘触发事件、focus自动获取焦点
最近在写小程序,项目要求写一个搜索框,在进入页面时就触发input的事件,调出键盘,点小键上的搜索按钮 就触发搜索事件,分享一下. bindconfirm 是点击小键盘上的搜索按钮就触发要执行的方法 ...
- java的一个爬虫
进行抓取页面,我看了一下人家的教程,一般要用到htmlparser用来解析html得到一个网页的相关链接,用httpclient抓取网页数据, 下面是一我写的spider类 package com.o ...
- Android5.0 CheckBox颜色修改
Android5.0开始,CheckBox带有material design动画效果,其默认的样式如下图所示: 可以看到,在上图中,CheckBox的边框为灰色,当被选中后,填充色为绿色. 那么如果我 ...
- phpcms 内容模块PC标签调用
PHPcms 调用命令的基本格式: 开始:{pc:content action="模块操作名" catid="调用栏目ID" num="数据调用数量& ...
- 内部类访问外部类方法中的参数-使用final
public synchronized <T extends MetricsSource> T register(final String name, final String desc, ...
- 「LuoguP2420」 让我们异或吧(树上前缀和
P2420 让我们异或吧-洛谷 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor ...
- SecureCRT远程连接虚拟机CentOS的三种方式
当在VMware虚拟机中将CentOS安装成功后,会在win7系统中模拟出两个虚拟网卡:VMnet1和VMnet8,我们来查看一下,点击“控制面板—>查看网络状态和任务—>更改适配器设置” ...
- 如何使用 Jmeter 发送 Json 请求
公司最近有一个项目,需要持续发送大量的 Json 请求到服务器,从而测试服务器可靠性. 我就发送 Json 请求部分发布这个博客. 一般来说, Json 请求的数据都保存到 CSV 文件中,然后使用 ...
- Linux服务:使用Supervisor管理进程
一.简介 由于基本每个公司都会用到supervisor这个进程管理工具,这里简单阐述一下. Supervisor (http://supervisord.org) 是一个用Python写Linux下的 ...
- 《Kubernetes权威指南第2版》学习(一) Kubernetes是什么
1.1 Kubernetes是什么? 首先,它是一个全新的基于容器技术的分布式架构领先方案.是谷歌的Borg(大规模集群管理系统)的一个开源版本. 其次,如果系统设计遵循了Kubernetes的设计思 ...