一、变量声明
变量声明的时候,既指定了值,又指定了类型
但值和类型可以改变
var a = 1 //值为1,类型为number
a = 2
a = '字符串' //值和类型可以改变
1 三种声明方式
- var a = 1
- let a = 1
- const a = 1
- a = 1 (错误写法,不能这样声明,这是赋值)
1.2 三种方式的区别
var
是过时的,不好用得到方式let
是新的,更合理的方式(一般认为是变量声明)const
是声明时必须赋值,且不能改进的方式(常量声明)
1.3 var变量提升
网道教程
写代码的时候不准写 var
2. let声明
2.1 规则
- 遵循块作用域,即使用范围不能超出 {}
- 不能重复声明:同一个作用域只能有一个a,除非是两个块
- 可以赋值,也可以不赋值:
let a
或者let a = 1
- 必须先声明再使用,否则报错
- 全局声明let变量,不会编程 window 的属性(var会变成window的属性)
- for 循环配合 let 有奇效(let单独为for写的,用来满足新人的幻想)
3.const声明
3.1 规则
- 几乎跟let一样
- 区别:声明时就要赋值,赋值后不能改
- 声明后相当于是个只读变量,常量,只能读不能改
- const不能与for循环连用,因为for会变成 i++ ,而const声明的值不能改
4.name
和'name'
的区别
- name是变量,存在 ‘不知道什么区’
name的值可以变,类型也不一样,根据值来改变 - 'name’是字符串,是存在stack区域
不能变,就是字符串
二、类型转换
- number => string
String(n)
n+''
''+n
- string => number
Number(s)
parseInt(s)/parseFloat(s)
:会把字符串变成整数,十进制(后面不需要加10,默认十进制)
s-0
:减法会把字符串变成数字,因此减0不会有影响
+s
:正号会尝试把后面的变成number - x => bool 变成布尔
Boolean(x)
!!x
:取反再取反,就是原始值,1为真,0为假
- x => string 变字符串