JS的数据结构

1.数值

1.1整数和浮点数

所有数字都是用64位浮点数保存,不严格区分整型和浮点型。64位中第1位数字表示该数字的正负,第2位到第12位为指数,第13位到第64位为有效数字。因此JavaScript 能够表示的数值范围为21024到2-1023。数字超过了21024次方后返回Infinity,小于或等于2-1075返回0

1.2数值表示

数值有多种表示方法

123e3 //123000
123e-3 //0.123
0b11 // 3,0b开头表示二进制
011 // 9,0开头表示八进制
0x11// 17,0x开头表示十六进制

1.3正负0

JS数字保留了一个二进制位作为正负位,所以0也有正负。

  • 除于+0-0会分别得到+Infinity-Infinity

1.4 NaN`

NaN表示非数字,字符串与数字计算的结果就会是NaN,非实数也表示为NaN0/0的结果为NaN,但是非0数除于0的时候,结果为+Infinity-InfinityNaN的布尔值为falseNaN的任何运算结果都为NaN

1+'x' // NaN
Math.sqrt(-1) // NaN
0/0 // NaN
8/0 // Infinity
NaN === NaN // false
Boolen(NaN) // false

1.5 Infinity

数字超过了21024次方后返回InfinityInfinity区分正负+Infinity-InfinityInfinity>任何数>-Infinity,但是和NaN比较时候结果都为false

Math.pow(2,1024) // Infinity
-1/0 // -Infinity

1.6 关于InfinityNaN的四则运算

NaN的任何计算结果都为NaN

NaN + 10 // NaN
NaN - 10 // NaN
NaN * 10 // NaN
NaN / 10 // NaN

Infinity与常数的计算和大部分常数计算一样

5 * Infinity //Infinity
5 + Infinity //Infinity
5 - Infinity // -Infinity
5 / Infinity // 0
Infinity /5 // Infinity
Infinity * Infinity // Infinity
Infinity + Infinity // Infinity

Infinity 部分计算得到NaN

Infinity * 0 // NaN
Infinity - Infinity //NaN
Infinity / Infinity //NaN

2.字符串

2.1.多行字符串

JS提供了多种方法来输入多行字符串

1.反斜杠结束,反斜杠后不可有任何字符串
var a = 'a \
b\
c'
console.log(a) // 'abc'
2.多字符串拼接
var a = 'a' +
  'b'+
  'c'
console.log(a) // 'abc'
3.反引号,难用的很
var a=`a
b
c`
console.log(a) // 'a\nb\nc'会带入\n
4.骚操作
(function (){ /*
a
b
c
*/}).toString().split('\n').slice(1,-1).join('')
// abc

2.2转义符

反斜杠 \的特殊含义

\0 : null
\b : 后退
\f : 换页
\n : 换行
\r : 回车
\t : 制表
\v : 垂直制表
' : 单引号'
" : 双引号"
\ : 反斜杠\

反斜杠表示Unicode

\HHH 用3个八进制表示Unicode
'\251' //  ©
'\172' // z
\xHH 用2个十六进制表示Unicode
'\xA9' //  ©
'\x7A' // z
\uXXXX 用4个十六j进制表示Unicode
'\u009A' //  ©
'\u007A' // z

2.3长度

length返回字符串长度

var a = 'balabala'
a.length //8

2.4切片

和Python不同的是,JS字符串无法直接多切、逆切,只能正向单切

var a = 'balabala'
a[0] = 'b'
a[1] = 'a'
a[-1] = undefined
a[1:2] //直接报错
a[0,3] //a 迷一样的操作

3.undefined和null

JS的数据类型比python多了undefinednull,二者都是“没有”,但语义和用在计算的时候体现出不同。

  • null表示空值,undefined表示未定义
  • 在数字计算中,null转为0,undefined则转为NaN

4.布尔

4.1 true false

在JS中,其他类型的除了undefined\null\false\0\NaN\空字符串,其他都为true

4.2 或且非

&&用来表示||用来表示!用来表示

1 && 1 // true
1 && 0 // false
0 && 0 // false
1 || 1 // true
0 || 1 // true
0 || 1 // false
!0 // true
!1 // false

4.3 三元运算

?:分隔的三个表达式,第一个表达式判断,第二个为true的值,第三个为false的值。

var a = 1 ? '我是对的' : '我是错的'  // a = ’我是对的'
var b = 0 ? '我是对的' : '我是错的' // b = ’我是错对'
a ? b : c 等同于 if(a){b}else{c}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • js中数据类型分为两种,第一种基本的数据类型:Number,String,Boolean,Null,Undefie...
    vins_lu阅读 851评论 0 0
  • 目录 概述typeof运算符number(数字)string(字符串)boolean(布尔)undefined &...
    阿小经阅读 773评论 0 7
  • 变量 声明变量 命名变量区分大小写的语言第一个字符是字母或下划线_,数字不能作为第一个字符字符必须是字母,数字或者...
    flyingtoparis阅读 793评论 0 0
  • 数值(number):整数和小数(比如1和3.14)字符串(string):文本(比如Hello World)。布...
    xyyojl阅读 823评论 0 1
  • 一、ECMAScript 一元运算符 一元运算符只有一个参数,即要操作的对象或值。它们是 ECMAScript 中...
    耦耦阅读 521评论 0 0