js utf8转gbk_js数据类型

  • 数字与字符串
  • 功能不同
  • 数字是数字,字符串是字符串,要严谨
  • 数字能加减乘除,字符串不行
  • 字符串能表示电话号码,数字不行
  • 储存形式不同
  • js中,数字是用64位浮点存储的
  • js中,字符串是用类似utf8形式存储的

如何存数字

十进制转二进制

二进制转十进制

用十六进制表示二进制

使用 win10 自带的计算器可以换算

bc2ff9f4b5d684a2526798cc155ef985.png

如何存储 abc 123 --- 使用编号表示 用0-127表示所有符号

2fa7366dca815b14cf1068399cebb1ce.png

中国人开始用电脑--(国标2312)---有了生僻字---微软--国标扩展--简称GBK--网页里有藏文--泰文---一次性解决全球需求---万国码--unicode--优缺点,每个字符要三个及以上字节---优化--utf8--8的意思就是最少用8位存一个字符

  • 存储英文字母 三字节缩成一字节,比GBK还省
  • 存储中文 ,还是三个字节

数字1和字符1的区别

  • 数字通过二进制直接存
  • 字符通过编码形式存储

js的数据类型

  • 7种大小写无所谓
  • 数字 number
  • 字符串 string
  • 布尔 bool ---布尔值--ture--false
  • 符号 symbol
  • 空 undefined
  • 空 null
  • 对象 object
  • 总结:数字不符,两空一对象
  • 以下不是数据类型
  • 数组,函数,日期
  • 它们都属于object

布尔 ture 和 false

下列运算符会得到bool值

  • 否定运算
  • !value (某些值前加上!号表示取反)
  • 相等运算
  • 1==2 ,1 !=2 ,3 ===4, !==4
  • 比较运算
  • 1>2 , 1>=2 ,3<4 ,3<=4

if配 bool

  • if 语句常常需要判断真假
  • if(value){...}else{...}
  • 问题
  • 如果value不是bool值怎么办?怎么判断真假
  • 1是真还是假,0是真还是假
  • '1'是真还是假.'0是真还事假'

五个falsy 值---falsy 就是相当于false但又不是false的值

分别是 undefined null 0 NaN ''

数字 number (64位浮点数)

  • 整数写法
  • 1
  • 小数写法
  • 0.1
  • 科学计数法
  • 1.2e4
  • 八进制写法(用的少)
  • 0123或00123或0o123
  • 十六进制写法
  • 0x3F 或 0X3F
  • 二进制写法
  • 0b11或0B11

特殊值

正0 和 负0

+0 === -0 
1/0
Infinity
1/+0
Infinity
1/-0
-Infinity //负无穷
  • 无穷大
  • Infinity +infinity -infinity
  • 无法表示的数字
  • NaN (Not a Number)
  • 但它是一个数字(讲一下历史)
0/0
NaN

NaN === NaN
false

64位浮点数

  • js数字的储存形式
  • 浮点就是浮动的点意思是小数点会乱动
  • 123.456可以表示为 1.23456e10^2
  • 也可以表示12345.6e10^-2

e9febce1ace89eaf7e6b4ea5044dc74f.png

64位储存一个number

  • 符号占1位
  • 指数占11位(-1023~1024)
  • 有效数字占52位(开头的1省略)

范围和精度

Number,Max_VALUE
1.7976931948623157e+308
  • 指数拉满,有效数字拉满,得到最大二进制数字
  • 指数负 方向拉满,有效数字最小1,得到最小值
Number.MIN_VALUE
5e-324
  • 范围和精度
  • 最多只能到52+1个二进制位表示有效数字
  • 2^53对应的十进制是9后面15个零
  • 所以15位有效数字都能精确表示
  • 16位有效数字如果小于90开头,也能精确表示
  • 911000000000000001就存不下来

字符串string

每个字符两个字节(阉割版UTF8)

写法

  • 单引号
  • '你好'
  • 双引号
  • "你好"
  • 反引号
  • `你好`
  • 注意
  • 引号不属于字符串的一部分,就像书名号不属于书名的一部分一样
  • 如果要在单引号里面包含单引号怎么办?

转义

  • 错误写法
  • 'it's ok'
  • JS引擎会认为'it'就结束了,后面看不懂
  • 正确写法
  • 'it's ok'
  • "it'ok" ---单引号和双引号交替使用
  • 用另一种写法表示你想要的东西
  • '表示'
  • "表示"
  • n 表示换行
  • r表示回车
  • t表示tab制表符
  • 表示
  • uFFFF表示对应的Unicode字符
  • xFF表示前256个Unicode字符

多行字符串

  • 如果你想要在字符串里回车
let s = `这样是
可以的
用反引号很容易做到`

af3254400fc01bdc2d0c87b90ec72c44.png
  • 以前没有反引号的时候
  • 写起来很麻烦可以看网道教程

字符串的属性

比较特殊,只有对象才有属性,这个是魔法

 string.length
 '123'.length //3
 'nrt'.length // ?
  ''.length // 0     (空)
  ' '.length // 1    (空格)
'//'.length // 3

通过下标读取字符

  • string[index]
  • let s ='hello'
  • s[0] // "h"
  • 注意index从0开始
  • let s = 'hello'
  • s[5] // undefined,居然不报错
  • s[4] // '0'

base64 转码

  • window.btoa
  • 正常字符串转为Base64 编码的字符串
  • window.atob
  • base64 编码的字符串转为原来的字符串
  • 一般用来隐藏招聘启事里的邮箱
  • 有时候也有用来自欺欺人

变量声名

  • 三种变量声名方式
  • var a =1
  • let a = 1
  • const a =1
  • a = 1 有时候是声明全局变量,有时候是赋值
  • 区别
  • var是过时的,不好用的方式
  • let 是新的,更合理的方式 (变量声明)
  • const 是声名必须赋值,且不能再改的方式 (常量声明)
  • 最后这种方式是错误的,不准这样声名
  • var 变量提升(后面)
  • 我们写代码从不用var
  • let 声明
  • 规则
  • 遵循块左右域,即使使用范围不超过{}
{
let b = 1
console.log(b)
}
1
console.log(b)
报错
  • 不能重复申明
  • 可以赋值,也可以不赋值
let a
a
undefined
  • 必须先声明再使用,否则报错
  • 全局申明的let变量,不会变成window的属性
var abc = 'abc'
undefined
window.abc
'abc'
这个是bug
  • for循环配合let有奇效
  • 满足新人幻想
for(let i=0;i<5;i++)
  setTimeout(()=>console.log(i),0)
0
1
2
3
4

const 声明

  • 规则
  • 跟let几乎一样
  • 只有一条不一样,声明时要赋值,赋值后不能改 (有且仅有一次赋值)
const i =100
undefined
i = 101
报错

变量声名

  • 指定值
  • var a =1
  • 同时也指定了类型
  • var a =1
  • 但是值和类型都可以随意变化
  • a=2
  • a='字符串'

name 和 'name'区别

name是变量

  • 值可以变可能是'name',可可能是'hello'

'name'是字符串常量

  • 常量就是不变量
  • 'name'只能是'name',不能是其他值

object 复杂类型

类型转换

  • number =>string
  • 用大写的String() 是函数
  • 用 n+'' n加空字符串
var n =1
undefined
String(n)
"1"
  • string 变 Number
  • s - 0
  • +s
var s = '123'
undefined
Number(s)
123

s-0
123

x => bool

  • boolean(x)
  • !!x
boolean(1)
true

!!1
ture
  • x=>string
  • String(x)
  • x.toString
ture.toString()
"true"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值