数组
定义
数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。
1var arr = ['a', 'b', 'c'];
上面代码中的a、b、c就构成一个数组,两端的方括号是数组的标志。a是0号位置,b是1号位置,c是2号位置。
除了在定义时赋值,数组也可以先定义后赋值。
12345var arr = [];arr[0] = 'a';arr[1] = 'b';arr[2] = 'c';
任何类型的数据,都可以放入数组。
123456789var arr = [ {a: 1}, [1, 2, 3], function() {return true;}];arr[0] // Object {a: 1}arr[1] // [1, 2, 3]arr[2] // function (){return true;}
上面数组arr的3个成员依次是 ...
函数
函数是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。
概述
函数的声明
JavaScript 有三种声明函数的方法。
(1)function 命令
function命令声明的代码区块,就是一个函数。function命令后面是函数名,函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。
123function print(s) { console.log(s);}
上面的代码命名了一个print函数,以后使用print()这种形式,就可以调用相应的代码。这叫做函数的声明(Function
Declaration)。
(2)函数表达式
除了用function命令声明函数,还可以采用变量赋值的写法。
123var print = function(s) { console.log(s);};
这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式(Function
Expression),因为赋值语句的等号右侧只能放表达式。
采用函数表达式声明函数时,function命令后面不带有 ...
对象
概述
生成方法
对象(object)是 JavaScript
语言的核心概念,也是最重要的数据类型。
什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
1234var obj = { foo: 'Hello', bar: 'World'};
上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象。该对象内部包含两个键值对(又称为两个“成员”),第一个键值对是foo: 'Hello',其中foo是“键名”(成员的名称),字符串Hello是“键值”(成员的值)。键名与键值之间用冒号分隔。第二个键值对是bar: 'World',bar是键名,World是键值。两个键值对之间用逗号分隔。
键名
对象的所有键名都是字符串(ES6 又引入了 Symbol
值也可以作为键名),所以加不加引号都可以。上面的代码也可以写成下面这样。
1234var obj = { 'foo': 'Hello', & ...
字符串
概述
定义
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
12'abc'"abc"
单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。
12'key = "value"'"It's a long journey"
上面两个都是合法的字符串。
如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此。
12345'Did she say \'Hello\'?'// "Did she say 'Hello'?""Did she say \"Hello\"?"// "Did she say "Hello"?"
由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript
语言的字符串只使用单引 ...
数值
概述
整数和浮点数
JavaScript
内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
11 === 1.0 // true
这就是说,JavaScript
语言的底层根本没有整数,所有数字都是小数(64位浮点数)。容易造成混淆的是,某些运算只有整数才能完成,此时
JavaScript
会自动把64位浮点数,转成32位整数,然后再进行运算,参见《运算符》一章的“位运算”部分。
由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
123456780.1 + 0.2 === 0.3// false0.3 / 0.1// 2.9999999999999996(0.3 - 0.2) === (0.2 - 0.1)// false
数值精度
根据国际标准 IEEE 754,JavaScript
浮点数的64个二进制位,从最左边开始,是这样组成的。
第1位:符号位,0表示正数,1表示负数
第2位到第12位(共11位):指数部分
第13位到第64位(共52位):小数部分(即有效数字)
符号位决定了一个数的正负,指数部分决定 ...
null, undefined 和布尔值
null 和 undefined
概述
null与undefined都可以表示“没有”,含义非常相似。将一个变量赋值为undefined或null,老实说,语法效果几乎没区别。
123var a = undefined;// 或者var a = null;
上面代码中,变量a分别被赋值为undefined和null,这两种写法的效果几乎等价。
在if语句中,它们都会被自动转为false,相等运算符(==)甚至直接报告两者相等。
123456789101112if (!undefined) { console.log('undefined is false');}// undefined is falseif (!null) { console.log('null is false');}// null is falseundefined == null// true
从上面代码可见,两者的行为是何等相似!谷歌公司开发的 JavaScript
语言的替代品 D ...
数据类型概述
简介
JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript
的数据类型,共有六种。(ES6 又新增了第七种 Symbol
类型的值,本教程不涉及。)
数值(number):整数和小数(比如1和3.14)。
字符串(string):文本(比如Hello World)。
布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)。
undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
null:表示空值,即此处的值为空。
对象(object):各种值组成的集合。
通常,数值、字符串、布尔值这三种类型,合称为原始类型(primitive
type)的值,即它们是最基本的数据类型,不能再细分了。对象则称为合成类型(complex
type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。
对象是最复杂的数据类型,又可以分成三个子类型。
狭义的对象(object)
数组(array)
函数(func ...
JavaScript 的基本语法
语句
JavaScript
程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。
语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句。
1var a = 1 + 3;
这条语句先用var命令,声明了变量a,然后将1 + 3的运算结果赋值给变量a。
1 + 3叫做表达式(expression),指一个为了得到返回值的计算式。语句和表达式的区别在于,前者主要为了进行某种操作,一般情况下不需要返回值;后者则是为了得到返回值,一定会返回一个值。凡是
JavaScript
语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。
语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。
1var a = 1 + 3 ; var b = 'abc';
分号前面可以没有任何内容,JavaScript 引擎将其视为空语句。
1;;;
上面的代码就表示3个空语句。
表达式不需要分号结尾。一旦在表达式后面添加分号,则 Ja ...
虚拟专用网络 (VPN)
通常用于保护互联网用户免受各种攻击。然而,加密货币用户和交易者特别容易受到攻击,因为坏人试图窃取他们的资金。
VPN
已被建议作为一种在交易加密货币或什至只是与它们进行交易时保持安全的方式。但是,在交易加密货币时保持安全的最佳
VPN 是什么?
交易加密货币时需要 VPN 吗?
如果您希望在交易加密货币时获得额外保护,答案是肯定的。使用
VPN,您可以将您的位置、IP 地址和数字活动等敏感信息保密。
这样一来,黑客或其他攻击者就更难轻松获得他们对您的钱包或计算机发起攻击所需的信息。这减少了您成为攻击受害者的机会,这也是您需要
VPN 来防止资金被盗的原因之一。以下是您在交易加密货币时可以使用的最佳
VPN。
NordVPN
NordVPN 是一个非常知名的
VPN,在全球范围内估计有 1400 万用户。它是适用于 Chromebook 的最佳 VPN
之一,具有许多令人惊叹的功能,其中一些功能使其成为加密货币交易者的完美选择。
首先,它允许用户同时连接多达六台设备。这允许典型的加密货币交易者在不同时间在多个设备上监控他的交易,以确保没有出错。
其次,它有一 ...
初识 Kafka
什么是 Kafka
Kafka 是由 Linkedin
公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper
的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。
Kafka 的基本术语
消息:Kafka
中的数据单元被称为消息,也被称为记录,可以把它看作数据库表中某一行的记录。
批次:为了提高效率, 消息会分批次写入 Kafka,批次就代指的是一组消息。
主题:消息的种类称为
主题(Topic),可以说一个主题代表了一类消息。相当于是对消息进行分类。主题就像是数据库中的表。
分区:主题可以被分为若干个分区(partition),同一个主题中的分区可以不在一个机器上,有可能会部署在多个机器上,由此来实现
kafka 的伸缩性,单一主题中的分区有序,但是无法保证主题中所有的分区有序。
生产者:
向主题发布消息的客户端应用程序称为生产者(Producer),生产者用于持续不断的向某个主题发送消息。
消费者:订阅主题消息的客户端程序称为消费者(Consumer),消费者用于处理生产者产生的消息。
消费者群组:生产者与消费者的关系 ...