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}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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