Eloquent JavaScript #01# values
When action grows unprofitable, gather information; when information grows unprofitable, sleep. Ursula K. Le Guin, The Left Hand of Darkness
索引
- Values, Types, and Operators
Web browsers are not the only platforms on which JavaScript is used. Some databases, such as MongoDB and CouchDB, use JavaScript as their scripting and query language.
这个教程应该是在持续更新的,作者在 Introduction 中表示书中用的是 2017 版本的 JavaScript
COPY ↓
Keeping programs under control is the main problem of programming.
The art of programming is the skill of controlling complexity.
Some programmers believe that this complexity is best managed by using only a small set of well-understood techniques in their programs. They have composed strict rules (“best practices”) prescribing the form programs should have, and carefully stay within their safe little zone.
This is not only boring, it is also ineffective. New problems often require new solutions. The field of programming is young and still developing rapidly, and is varied enough to have room for wildly different approaches. There are many terrible mistakes to make in program design, and you should go ahead and make them so that you understand them. A sense of what a good program looks like is developed in practice, not learned from a list of rules.
Standard ECMA-262 - Ecma International
After its adoption outside of Netscape, a standard document was written to describe the way the JavaScript language should work, so that the various pieces of software that claimed to support JavaScript were actually talking about the same language. This is called theECMAScript standard, after the Ecma International organization that did the standardization.
Values, Types, and Operators
- Bits
Values -
每个值都必须存储在某个地方,如果您想同时使用大量数据,则可能会导致内存不足。幸运的是,只有在同时需要大量值的时候,这才是一个问题。只要你不再使用值,它就会消失,留下它的一部分 作为下一代值的建筑材料。
本章介绍JavaScript程序的原子元素,即简单的值类型和可以处理这些值的操作符。
Numbers - JavaScript 用定长的比特存储数字 -- -JavaScript uses a fixed number of bits, namely 64 of them, to store a single number value. you can represent 264different numbers, which is about 18 quintillion (an 18 with 18 zeros after it). 仅仅是 2 的 64 次方个不同数字!并不是指如此多的正整数。 ---- - Not all whole numbers below 18 quintillion fit in a JavaScript number, though. Those bits also store negative numbers, so one bit indicates the sign of the number. A bigger issue is that nonwhole numbers must also be represented. To do this, some of the bits are used to store the position of the decimal point. The actual maximum whole number that can be stored is more in the range of 9 quadrillion (15 zeros)—which is still pleasantly huge.
Special numbers -- The first two are
Infinityand-Infinity, which represent the positive and negative infinities.Infinity - 1is stillInfinity, and so on. Don’t put too much trust in infinity-based computation, though. It isn’t mathematically sound, and it will quickly lead to our next special number:NaN. ---------------NaNstands for “not a number”, even though it is a value of the number type. You’ll get this result when you, for example, try to calculate0 / 0(zero divided by zero),Infinity - Infinity, or any number of other numeric operations that don’t yield a meaningful result.- Strings, too, have to be modeled as a series of bits to be able to exist inside the computer. The way JavaScript does this is based on the Unicode standard. This standard assigns a number to virtually every character you would ever need, including characters from Greek, Arabic, Japanese, Armenian, and so on. If we have a number for every character, a string can be described by a sequence of numbers. -- -'/n' -- - And that’s what JavaScript does. But there’s a complication: JavaScript’s representation uses 16 bits per string element, which can describe up to 216different characters. But Unicode defines more characters than that—about twice as many, at this point. So some characters, such as many emoji, take up two “character positions” in JavaScript strings.
Unary operators -- --Not all operators are symbols. Some are written as words. One example is the
typeofoperator, which produces a string value naming the type of the value you give it. 这里提到一个非符号一元操作符 typeof → console.log(typeof 4.5) output = numberComparison - - -There is only one value in JavaScript that is not equal to itself, and that is
NaN(“not a number”). console.log(NaN == NaN) // → false - ----- -NaNis supposed to denote the result of a nonsensical computation, and as such, it isn’t equal to the result of any other nonsensical computations.Empty values -- 别把它和 Special numbers 搞混了,它已经脱离了 数(numbers)的范畴了。
有两个特殊值,写成 null 和 undefined,用来表示意义缺失的值(也就是没有意义的值)。 它们本身是值,但它们没有包含任何信息。
语言中有许多没有得到有意义的值的操作(稍后会看到)会产生 undefined,因为它们必须产生一些值。↑ (虽然 没有包含任何信息)
undefined 和 null 之间含义的差异 是 JavaScript设计的一个意外,大多数时候它并不重要。 在你不得不关注这些值的情况下,我建议将它们视为大体上可互换的。
Empty values # 摘
There are two special values, written null and undefined, that are used to denote the absence of a meaningful value. They are themselves values, but they carry no information.
Many operations in the language that don’t produce a meaningful value (you’ll see some later) yield undefined simply because they have to yield some value.
The difference in meaning between undefined and null is an accident of JavaScript’s design, and it doesn’t matter most of the time. In the cases where you actually have to concern yourself with these values, I recommend treating them as mostly interchangeable.
Automatic type conversion # 摘
When you do not want any automatic type conversions to happen, there are two additional operators: === and !==. The first tests whether a value is precisely equal to the other, and the second tests whether it is not precisely equal. So "" === false is false as expected.
/
I recommend using the three-character comparison operators defensively to prevent unexpected type conversions from tripping you up. But when you’re certain the types on both sides will be the same, there is no problem with using the shorter operators.
/
We can use this functionality as a way to fall back on a default value. If you have a value that might be empty, you can put || after it with a replacement value. If the initial value can be converted to false, you’ll get the replacement instead. 逻辑运算的奇淫巧技,就是说逻辑运算符号两侧如果不是布尔值,那么将会把左侧值自动转化为布尔值然后根据转化结果返回 两侧值中的一个。 那么谁知道左侧值会转化为 false 还是 true 呢? 规则是这样的:0,NaN,"" 都是false 其余都是 true,那为什么只转化一边就可以决定返回值呢?原因当然是因为短路运算啦。。。
NaN || "3333"
"3333" 0 || "3333"
"3333" "" || "3333"
"3333" Infinity || "3333"
Infinity null || "3333"
"3333" undefined || "3333"
"3333"
不过经过我测试 null 和 undefined 返回的也是 false 所以还是慎用。。。
/
Another important property of these two operators is that the part to their right is evaluated only when necessary. In the case of true || X, no matter what X is—even if it’s a piece of program that does something terrible—the result will be true, and X is never evaluated. The same goes for false && X, which is false and will ignore X. This is called short-circuit evaluation.
The conditional operator works in a similar way. Of the second and third value, only the one that is selected is evaluated.
Eloquent JavaScript #01# values的更多相关文章
- Eloquent JavaScript #13# HTTP and Forms
索引 Notes fetch form focus Disabled fields form’s elements property 阻止提交 快速插入单词 实时统计字数 监听checkbox和rad ...
- Eloquent JavaScript #04# Objects and Arrays
要点索引: JSON More ... 练习 1.补:js字符串的表达方式有三种: "" 和 '' 没什么区别,唯一区别在于 "" 中写 "要转义字符 ...
- 闲扯 Javascript 01 实现选项卡
javascript 实现选项卡 今天下午的两节课,在机房闲来没事 ,就学习了javascript 怎么获取HTML的标签,改变CSS样式,资料来源 智能社! <script> windo ...
- 初识 Javascript.01 -- Javascript基础|输出方式、变量、变量命名规范、数据类型、
Javascript基础 1 聊聊Javascript 1.1 Javascript的历史来源 94年网景公司 研发出世界上第一款浏览器. 95年 sun公司 java语言诞生 网景公司和su ...
- Eloquent JavaScript #11# The Document Object Model
索引 Notes js与html DOM 在DOM树中移动 在DOM中寻找元素 改变Document 创建节点 html元素属性 布局 style CSS选择器 动画 Exercises Build ...
- Eloquent JavaScript #10# Modules
索引 Notes 背景问题 模块Modules 软件包Packages 简易模块 Evaluating data as code CommonJS modules ECMAScript modules ...
- Eloquent JavaScript #09# Regular Expressions
索引 Notes js创建正则表达式的两种方式 js正则匹配方式(1) 字符集合 重复匹配 分组(子表达式) js正则匹配方式(2) The Date class 匹配整个字符串 Choice pat ...
- Eloquent JavaScript #03# functions
索引: let VS. var 定义函数的几种方式 more... 1.作者反复用的side effect side effect就是对世界造成的改变,例如说打印某些东西到屏幕,或者以某种方式改变机器 ...
- Eloquent JavaScript #02# program_structure
第一章中作者介绍了各种值,但是这些独立的值是没有意义的,只有当值放在更大的框架的时候才会彰显它们的价值.所以第二章开始介绍程序结构. 1.var VS. let 以及 const 作者推荐用 let ...
随机推荐
- 云计算概述及Centos7下安装kvm虚拟机
云计算(cloud computing)是基于互联网的相关服务的增加.使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源 云计算到底是什么? 按定义:云计算指的是一种使用模式,是基 ...
- (转)springboot全局处理异常(@ControllerAdvice + @ExceptionHandler)
1.@ControllerAdvice 1.场景一 在构建RestFul的今天,我们一般会限定好返回数据的格式比如: { "code": 0, "data": ...
- Elasticsearch 搜索模块之Cross Cluster Search(跨集群搜索)
Cross Cluster Search简介 cross-cluster search功能允许任何节点作为跨多个群集的federated client(联合客户端),与tribe node不同的是cr ...
- 【LeetCode每天一题】3Sum Closest(最接近的三数和)
Given an array nums of n integers and an integer target, find three integers in nums such that the s ...
- js 图片区域可点击,适配移动端,图片大小随意改变
实现图片区域可点击,实际上使用map是可以的,但是适配效果并不好,图片只能是固定大小的值,而且点都被写死了. 在这里,我使用的js基于canvas写的一个小工具.可以圈出你需要点击的部分,然后生成一串 ...
- windows server 2008 R2如何更换系统界面语言/中文换英文
下面我们来讲解一下如何将中文系统转化成日文.韩文.英文等其它语言界面的系统. 以windows server 2008 R2系统中文变英文为例: 1.到微软官方下载:Windows Server 20 ...
- MySQL数据类型--与MySQL零距离接触2-12主键约束
定义一个主键,可以用PRIMARY KEY,也可以用KEY. 主键约束的字段禁止为空. 写入4条记录,查看它的自动编号: 自动编号确实是1 2 3 4 AUTO_INCREMENT字段必须定义为主键, ...
- UGUI实现摇杆
效果图
- 注解(Annotation)
注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是 ...
- time_t time()
time_t atime, btime; time(&atime); btime = time(0); 两种方式效果一样.