24-【JS全解】JS 数据类型 对象下篇更

数字与字符串

  • 功能不同:
    数字能加减乘 字符串只能加

    字符串表示手机号码,数字不行,0开头没有意义

  • 存储方式不同

    js中,数字是转成2进制即64位浮点数形式存

    js中,字符串经过编码再转换成数字存储的

如何存数字

数字以0/1存,所以转二进制

  • 10转2:31=?*2……

  • 2转10:=2的n次方

  • 16进制转2进制:1-9 A-F

    以8 4 2 1表示xxxx

    把二进制数对应四个四个一份,大于9转换成数字

    也可用程序员计算器

如何存字符
  • 0~127表示所有字符:其中‘0’表示48,48-57表示数字符号,65表示A,97表示a

  • 【GB2312】:为汉字用,一个16进制数表示4位,4个就是16位,2个字节,包含2^16个字符

  • 【微软GBK】:生僻字、繁体字、韩文,国标扩,含2万多个,兼容GB2312,16位,后来国家发布新的国标库,但是不兼容GB2312未被广泛使用

  • 【万国码Unicode】:藏文、泰文,包含3万多个字符,字节大于2个,大于2^16,占硬盘

  • 【UTF-8】:开头1110表示这个字符3个8位,于是再读两个8位信息,开头各为10表示位数,然后合起来,前面补0,再读,开头为0说明只占8位,问开头的那个人比如餐厅

    UTF-8 是 Unicode 一种存储规则,也叫字符编码规则

    以8位起,英文一个字节,中文3个字节

js的数据类型
分类:四基二空一对象

不区分大小写

number、string、bool、symbol、underfined、null、obeject

注意:函数、数组、日期都是对象

number类型

整数、小数、科学计数法、十六进制0X或0x开头、八进制0或00或0o开头、二进制0b或0B开头

JS 的 number 全都是以小数(浮点数)的形式存储的,没有单独的整数

number特殊值
  • 0分3种:正负0,0,但是

    2/0
    Infinity
    2/+0
    Infinity
    2/-0
    -Infinity
    
  • 无穷大

    infinity,+infinity,-infinity

  • NaN是一个数字 表示不知道的数字,知识受限制;

    NaN !==NaN

    例如0/0 0?1?

    数学的历史:正数,0,负数,分数(有理数),无理数Π,虚数i^2=-1复数

    64位浮点数

    小数点可以移动的数

    符号0表示正数,1表示负数,

    指数部分为2^11,由于含正负,所以减半,范围为-1023~1024;

    有效数字的首位都不是0,由于10进制首个可为1~9,二进制发现首位可为1,所以省掉第一个1
    在这里插入图片描述
    0.5怎么存

    先转成二进制数,1*2-1得0.1,为2-1,所以存储为0 -1 0

    0.625怎么存

    转成二进制数,得0.101,转成科学计数法,所以存储为0 -1 01

    64位浮点数的范围和精度

    范围

    最大:指数拉满2^1024,有效数字拉满(全为1),得最大二进制数

Number.MAX_VALUE
1.7976931348623157e+308

​ 最小:指数负的最大2^-1023,有效数字(全为1),得最小二进制数

Number.MIN_VALUE
5e-324

精度:有效数字

最多52+1个有效数字

2^53有效数字是对应十进制数:9开头的15位数

所以最大为十进制15-16位有效数字,约为53位的二进制有效数字

16位的有效数字,小于90开头的可精确显示

所以900000000000001的0不会显示

字符串string

2个字节

写法:单,双,反引号``

引号不属于字符串

转义\
'it\'s \"ok\"'
"it's "ok""

`it's "ok"`
"it's "ok""
单双引号交替使用,反引号万能
'1\n2'
"1
2"
'1\r2'
"1
2"
'1\t2'
"1	2"
'\uFFFF'
""
'\x31'
"1"

\n表示换行

\r表示回车

\t表示制表位

双\表单\

\uffff表示unicode字符

\xff表示256个Unicode字符 例如\x31表示1 10进制的49成31

多行字符串

里面回车

let s=`大家好
嘻嘻
哈哈`
字符串属性

对象才有属性的

字符串长度.length

空字符串和空格字符串不同,为0和1

'123'.length
3

'\n\r\t'.length
3

'\\\\\\'.length
3

''.length
0

' '.length
1

通过下标读取字符串 string[index]

index是0开始,length-1结束

let s='hello'
undefined
s[0]
"h"
s[5]
undefined

base64转码

编码btoa和反编码atob

window.btoa('1429483153@qq.com')
"MTQyOTQ4MzE1M0BxcS5jb20="
window.atob('MTQyOTQ4MzE1M0BxcS5jb20=')
"1429483153@qq.com"
bool的5个falsy值

if(value){…}else{…}

value为bool值还好,不是呢怎么判断真假

flasy值是相当于false,但不是false值

五个:underfined null 0 NaN ''空字符串 false

只有这几个false值,空字符串和空格字符串不是一个

underfined和null

无本质区别

区别在于:

  • underfined是声明未赋值的变量的默认值
  • 函数返回值return未写时,默认return underfined
  • 习惯上,非对象为空写成underfined,对象是null
symbol符号

Symbol 生成一个全局唯一的值

变量声明三种

var a=1

let a=1 //变量声明

const a=1 //常量声明

a=1 //赋值,不是声明

function f1(){
    let a=1;
function f2(){
a=2;}
f2();}
undefined
f2()
VM236:1 Uncaught ReferenceError: f2 is not defined
    at <anonymous>:1:1

以后只能用let

let声明
  • 只作用于代码块,不超出{}

    {
    let a=1;
    }
    console.log(a);
    
  • 不能重复声明 在同一个作用域

    let a=2;
    {
    let a=4;
    }
    //正确
    
  • 声明时可以赋值,可以不赋值

  • 先声明在使用

  • 全局声明的let,不会成为window的属性

    var会,例如window.abc

  • for循环配合奇效

    for(let a=1;a<5;a++){
    setTimeout(()=>{console.log(a)
    },0)}
    //返回1 2 3 4 
    //var是显示4个5
    
const声明
  • 其他和let一样
  • 但不和for循环配合
  • 声明时要赋值,且不可更改
变量声明
  • 声明指定了值和类型
  • 后期可随意变化
  • 区别name和‘name’:

前者是变量,存在不知道什么区,值和类型可变

后者是常量字符串,存在堆中

类型转换
number=>string

String()

123+’’ 空字符串

js Bug:String(1…20个0…)会转换成科学计数法"1e+22"

string=>number

Number()

‘abc’-0

+‘abc’

preseInt(s)/preseFloat(s)

x=>bool

Boolean()

!!x //取原始布尔值,如!!1

!1
false
!!1
true
x=>string

x.toString()

true.toString()
"true"

特例:

1.toString报错

1 .toString

1…toString

(1).toString

1..toString()
"1"

都正确

《js 秘密花园》

讲述js各种奇葩之处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值