javascript
值类型(基本类型):字符串(string)、数字(number)、布尔(boolean)、空(null)、未定义(undefined)、symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
在js中对象跟其它语言中的类的对象的概念是不太一样的,在JavaScript 中,对象也是一个变量,但对象可以包含多个值(多个变量),每个值以键值对呈现,并用大括号{}包住定义一个对象,对象是变量的容器,但我们通常认为 "JavaScript 对象是键值对的容器"。
键值对通常写法为 name : value (键与值以冒号分割)。
键值对在 JavaScript 对象通常称为 对象属性。
var car = {name:"Fiat", model:500, color:"white"}; //car是一个Object类型的变量,这个car是一个引用类型,是浅拷贝的,当用另一个变量car2=car 并修改car2.name="helloworld"时,car.name也就等于helloworld.
基础类型也都有一个继承Object的类,所以说在javascritp中一切都是对象是对的。
这也是为什么一个变量可以变来变去的赋不同类型的值,因为他们本质都是object
Typescript
any 类型, void类型, never类型, enum类型
如果不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any
类型来标记这些变量
void
类型像是与any
类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
never
类型表示的是那些永不存在的值的类型。 例如, never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never
类型,当它们被永不为真的类型保护所约束时。
never
类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never
的子类型或可以赋值给never
类型(除了never
本身之外)。 即使 any
也不可以赋值给never
enum
类型是typescript对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。
实际值默认从0开始依次加1递增。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
number
数字类型是统一的,只有一种数字类型,就是number,都是64位浮点数
JavaScript 采用 IEEE754 标准定义的 64 位浮点格式表示数字,它能表示最大值(Number.MAX_VALUE)为 ±1.7976931348623157e+308,最小值(Number.MIN_VALUE)为 ±5e-324。你完全可以不用考虑数据的大小可能会溢出的问题。
可以将小数随意赋给number类型的变量,但是小数的运算结果会出现误差,比如 0.1+0.1==0.2是会返回false的,因为0.1+0.1应该会等于0.1999999999999999或者0.200000000000000001这样的数所以
string
字符串可以通过索引访问某一位上的字符,但是不能直接通过索引改
要单独改的话可以通过replace方法返回一个修改后的新字符串
常用的方法:
字符串使用split(string)函数转为数组:会将原字符串转化成以参数为分隔符的字符串数组
模版字符串: `xxxxx${变量}xxxx ` 类似于 xxxxxx+"变量"+xxxxx
变量声明
在ES6(2015年后的javascript版本)中,可以用let 来声明变量,首先let具有块级作用域,子块中用let声明的同名变量是可以屏蔽夫块的同名变量的,而var具有的是函数级作用域,一旦声明(即使在子块中)会自动将声明提升到函数的开头,声明同名变量往往会导致程序的运行与预想的结果是不一致的,因为后声明的变量的修改其实也是前一个变量,同时let 也是严格的,一旦在同一块中声明了两个同名的变量也会报错,而var是不会的。