美文网首页我爱编程
JS基础系列(一): JS里的数据

JS基础系列(一): JS里的数据

作者: squall1744 | 来源:发表于2018-03-26 00:41 被阅读0次

JS数据类型


  • 基本类型
    number
    string
    boolean
    undefined
    null
    symbol(不常用)

  • 引用类型
    object

number类型


number就是数字类型, 支持多种写法

十进制

整数 1 2 3 4 5 6 7 8 100
小数 1.1 2.3 0.125 4.235 .5 .6 .7
科学计数法 1.35e2表示135

二进制

0b10 0b11 0b1101

八进制

0b10 0b12

十六进制

0xff 0x11 0x4a

string类型


单行字符串

''或者""包含的数值, 如
'abc'表示字符串abc
'10' 表示字符串10, 并非数字10
"d23"表示字符串d23
''引号之间什么都不加表示空字符串, 长度为0
' '引号中间有空表表示一个空格字符串, 长度为1, 这点需要注意

字符串转义

某些特殊的字符会产生歧义, 这时候我们需要用转义符来表示, 比如

我们需要表示一个'单引号字符串,如果直接输入三个引号''' , JS就会不知道该怎么解析, 到底是前两个引号是一组, 最后一个是另外一个引号还是第一个和第三个是一组, 中间的是字符串, 通常情况下, JS对这种情况会解析为前两个是一组引号, 最后一个是多余的单引号,这样会报错, 这种情况下, 就需要借助转义符了

我们用\后面跟一个字符表示转义,比如刚才的情况, 我们可以下写成'\'', 这样JS就会把\后面紧跟的那个符号解析成字符了

这里需要注意\'的长为1, \不占长度的

下面列出JS常用转义符

符号 功能
\' 单引号字符串
\" 双引号字符串
\& 和号字符串
\\ 反斜杠字符串
\n 换行
\r 回车
\t 制表
\b 退格
\f 换页

多行字符串

当我们需要输入多行字符串的时候我们可以用以下方法

let a = '12334\
dfdfdfdsf\
fdfddf'

let b = "dffdfdf\
ddf1111\
dfdffdf"

这里需要注意\后面必须紧跟着输入回车键, 不能有空格等任何字符, 不然JS会报错

模板字符串

ES6引入了模板字符串, 这个使得字符串更容易输出了

模板字符串使用两个``符号(键盘上数字1旁边那个键)包裹字符串,

比如上面的多行字符串, 我们可以不用转义符号

let a = `asdfd
cvvbf`

这里有个坑, a的长度是11, 因为回车也被认为是一个字符

模板字符串里还可以包含变量, 变量在模板字符串中用${变量名}表示

let a = 'hello'

let b =`${a} world`

//输出结果为hello world

boolean类型


boolean只有两个值truefalse, 用来判断逻辑真和假的值, 比如我们常用的if语句的判断条件

let a =3 
if(a < 3) {
  console.log(1)
} else if(a>2) {
  console.log(2)
}

//打印出2, 因为a<3的值是false, a>2的值为true所以执行条件为a>2的语句

&&||

&&表示逻辑与, 表达式中有一个值为false, 则整个表达式的值为false

true && true = true
true && false = false
false && false = false

||表示逻辑或, 表达式中有一个值为true, 整个表达式的值为true

true || true = true
true || false = true
false || false = false

null类型和undefined类型


这两个类型都是只有一个值, 都表示什么也没有, 为什么表示什么也没有会有两个值呢, 大家可以理解为这是js设计的一个bug, 下面来说下这两个值得细微差别

  • 如果一个变量没赋值, 则是undefined
  • 有一个对象object, 暂时不想赋值, 可以给个null,
  • 基于以上两点, 我们可以认为null是空对象, undefined是空的基本类型

请记住上面三点即可

object类型


object就是对象, 表示一个哈希表, 对象里面可以包含若干个简单类型及复杂类型的键值对

let obj = {
  name: 'Adam',  //string类型
  age: 25,  //number类型
  gender: 'male' //string类型
}

obj.name //输出Adam
obj.age //输出25
obj.job //输出undefined, 没有定义
obj['name'] //等同于obj.name, 输出Adam

上面的例子应该很好理解, 但是这里有一个需要注意的obj.name中的name并不是变量而是字符串实际上就是'name', 假设我们有以下代码

let a = 'name'
let obj = {
  name: 'Adam', 
  age: 25, 
  gender: 'male' 
}
obj.a // 这里打出的是undefined, 因为a是字符串'a', 而不是变量a
obj[a] //这个可以打出Adam

我们对象里面可以再添加对象吗, 答案是可以

let obj = {
  name: 'Adam',  //string类型
  age: 25,  //number类型
  gender: 'male', //string类型
  son: {
    name: 'Tomy',
    age: 2,
    gender: 'male'
  }
}

obj.son.name //输出Tomy
bbj.son.age //输出2

我们甚至还能添加个空字符串当key

let obj = {
  name: 'Adam',  //string类型
  age: 25,  //number类型
  gender: 'male', //string类型
  son: {
    name: 'Tomy',
    age: 2,
    gender: 'male'
  },
  '': 'blank'
}

这里还有一点需要注意, 对象的key也是可以加引号的, 不加引号的情况下, key必须符合js的命名规则, 即9a或者a b都是不合法的, 但是如果加上引号, 则'9a'和'a b'则是合法的key名称

let obj = {
  9a: 'xxx', //不合法, 会报错
  '9a': 'xxx' //合法, 不会报错
}

delete, in, for in 和 typeof


delete 和 in

delete用来删除对象里的内容, in用来查看键值对是否在对象中

let obj = {
  name: 'Adam',
  age: 25,
  gender: 'male'
}
'name' in obj    //true 表示obj中有name键值对
delete obj['name']
obj.name        //name: 'Adame'已经被删除,所以是undefined
'name' in obj  //false

for...in

for in用来遍历对象中的key,

我们有以下代码, 用来打印出obj中的key, 但是需要注意的是, 由于对象中的key是无序排列的, 所以先打出来name还是age还是gender, 这个看运气了

let obj = {
  name: 'Adam',
  age: 25,
  gender: 'male'
}

for(let key in obj) {
  console.log(key)
} //随机顺序打印出name, age, gender 

typeof

用来检测变量的类型, 比如

let a = 'adf'
let b = 123
typeof a // string
typeof b // number

这里又有两个个bug

  • null的typeof是object
  • 函数的typeof是function

相关文章

  • JS基础系列(一): JS里的数据

    JS数据类型 基本类型numberstringbooleanundefinednullsymbol(不常用) 引用...

  • js入门知识点

    * 基础知识 * js的输出方式 * js的组成 * js的命名规范 * 数据类型 * number数据类型 * ...

  • JS基础系列(一)JS数据类型

    原生js数据类型、存储以及拷贝 1、类型 值类型(基本类型):字符串(String)、数字(Number)、布尔(...

  • JS基础之JS里的数据

    JS一共有7中数据类型,其中分为两类:基本类型和引用类型。 数据类型: 基本类型:numberstringbool...

  • JS基础系列(二): JS里的类型

    内置类型 JS中一共有七个内置类型: number string boolean undefined null o...

  • JS基础系列(三): JS里的对象

    全局对象window 在说全局对象之前, 我们先讲一个小知识点 JS规定, 如果首行是大括号, 一律解释为代码块 ...

  • JS基础系列(四): JS里的数组

    MDN 学习JS的时候一定要善用MDN查API 假如我们想要查全局函数Array, 我们可以在google中输入'...

  • JS基础系列(五): JS里的函数

    声明函数的5种方式 第一种方式: 具名函数 第二种方式: 匿名函数 第三种方式: 具名函数表达式 这种方式的函数名...

  • 1、js基础

    js基础 js 数据类型 number string bool null undefined object 值类型...

  • ES6基础

    JS基础 JS基本数据类型 Number String Boolen Null Undefined Object-...

网友评论

    本文标题:JS基础系列(一): JS里的数据

    本文链接:https://www.haomeiwen.com/subject/ekyfcftx.html