js入门-数据类型

1 数字与字符串

  • 都是一,为什么要分1和'1'
  • 功能不同
    数字是数字,字符串是字符串,要严谨
    数字能加减乘除,字符串不行
    字符串能表示电话号码,数字不行
  • 存储形式不同
    js中,数字是用64位浮点数的形式存储的
    js中,字符串是用类似UTF8形式存储的(UCS-2)

2 如何存数字

十进制转二进制

二进制

  • 10转2
    31变成二进制31=?x2^5 + ? X2^4 + ? X 2^3 + ? X 2 ^ 2 + ? X 2 + ? X 2 ^ 0
    31变成二进制31=0x2^5 + 1 X2^4 + 1 X 2^3 + 1 X 2 ^ 2 + 1 X 2 + 1 X 2 ^ 0
    所以31 (十进制)= 01111(二进制)
  • 2转10
    100011变十进制
    每一位乘以2的N次方,然后加起来就可
    100011 = 2 ^ 5 + 2 ^ 1 + 2 ^0 = 35
  • 用十六进制转二进制
    011110001011010
    从右往左每四位改写一位:011110001011010
    得到3,12,5,10;大于9的用ABCDEF
    于是得到3C5A
    用0~127表示所有符号
    0 表示结束字符
    10 表示换行
    13 表示回车
    32 表示空格
    33~ 47 表示标点
    48~57 表示数字符号
    65~90 表示大写字母
    97~122 表示小写字母
    127 表示删除键

Unicode

1 优点

  • 已收录13万字符(大于16位),全世界通用
  • 以后会继续扩充,不会停止
    2 缺点
  • 两个字节不够用,每个字符要用三个及以上字节
  • 这样所有文件都扩大50%
    3 utf-8
    存储[a]
    • a对应的Unicode编号为97,十六进制为61
    • Unicode直接存:00000000 00000000 01100001
    • UTF-8: 01100001
    • 三个字节变一个字节,比GBK省

3 JS的数据类型

7种(大小写所谓)

1 数字 number (64位浮点数组成)

1 表示方法
整数 1
小数 0.1
科学计数 1.2e4
八进制 0123 或者 00123 或者 0o123
十六进制 0X3F或者0x3F
二进制 0b11 或者 0B11
特殊值
+0-0NaN(一个数字 not a number)、Infinity+Infinity-Infinity

NaN !== NaN

2
123.456可以表示为1.23456e10^2
也可以表示为 12345.6e10^-2


image.png

符号占一位
指数占11位(-1023~1024)
有效数字占52位(开头的1省略)
3 范围和精度
3.1 范围

  • 指数、有效数最大,得到最大的二进制数字
  • Number.MAX_VALUE: 1.7976931348623157e+308
  • 指数、有效数最大,得到最小二进制数字 5e-324
    3.2 精度
    最多只能有52+1个二进制位表示有效数字
    2^53对应的十进制是9后面15个零
    所以15位有效数字都能精确表示
    16位有效数字如果小于90开头,也能精确表示

2 字符串 string

1 写法

  • 单引号
'你好'
  • 双引号
"你好"
  • 反引号
`你好`

引号不属于字符串的一部分

'it\'s ok'
"it's ok"
`it's of`

2 转义

  • \’表示'
  • "表示"
  • \n表示换行
  • \r表示回车
  • \t 表示 tab制表符
  • \ 表示 \
  • \uFFFF 表示对应的Unicode字符
  • \xFF 表示前256个Unicode字符
    3 字符串属性
    string.length
"abc".length

string[index]

"abc"[0]//a

base64转码
window.btoa


image.png

正常字符串转为base64
window.atob
base64转正常字符串


image.png

3 布尔 bool

只有两个值true和false
if语句需要判断真假
if(value){} else {}
问题来了

  • value是bool
  • value不是bool值
  • 1是真还是假,0是真还是假
  • '1'是真还是假的,'0'是真还是假的
    五个falsy值
    falsy就是相当于false的值但不是false
    undefined、null、0、''、NaN

4 符号 symbol

5 空 undefined 和 空 null

没有本质区别
一个变量声明后,没有赋值,默认值是undefined
一个函数执行完成后,没有返回值,那么默认返回undefined

6 对象 object

数组、函数、日期都是对象

数据转换

字符串转数值

var n = 1;
String(n)
// 或者
n + ''

数值转字符串

var str = '123'
parseInt(str);
// 或者
str - 0;
// 或
+str;

转为bool

let a;
!!a;

转string

true.toString
false.toString
1..toString

image.png

更多js秘密

4 变量声明

1 三种声明的方式

var a = 1
let a = 1
const a = 1

区别

  • var是过时的、不好的方式
  • let 是新的、更合理的方法
  • const是声明时必须赋值、且不能再改方式

var变量提升

a = 1;
console.log(a);
var a;

let

  • 遵循块作用域,即使用不能超出块
{
let b = 1;
}
console.log(b)// 超出块级作用域
  • 不能重复声明
let a = 1;
let a = 2;//错误写法
  • 可以赋值,也可以不赋值
let a = 1;
let b;
  • 必须先声明,再使用
console.log(v);// 报错
let v;
image.png
  • 全局声明let变量,不会变成window的属性
  • for 配合let使用
for(let i = 0; i < 5; i++){
  setTimeout(
    () => {
      console.log(i)
     }
  )
}
for(var i = 0; i < 5; i++){
  setTimeout(
    () => {
      console.log(i)
     }
  )
}
image.png

const

1 规则
与let几乎一样
必须在声明时赋值,但是无法修改值


image.png

变量声明

指定了值,同时指定了类型,但是值和类型都可以随意变换

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

推荐阅读更多精彩内容