一、js引入
引入外部js的script标签内不能写代码,不然没效果
二、输入输出语法
1、document.write():输出在html页面上
2、console.log() :输出在控制台上
3、 alert():弹窗
三、输入语法
prompt()
四、字面量
也就是变量类型,比如字符串字面量,数组字面量等
五、变量
指程序中反复使用的数据 保存为变量再参与运算
在内存内开辟一段空间用于存储变量
字母、下划线、数字、$ 不能数字开头 字母区分大小写
六、var let const
(1)块级: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题:
-
内层变量可能覆盖外层变量
-
用来计数的循环变量泄露为全局变量
(2)变量提升: var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。
(3)给全局添加属性: 浏览器的全局对象是window,node的全局对象是global。var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和const不会。
(4)重复声明: var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。const和let不允许重复声明变量。
(5)暂时性死区: 在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。
(6)初始值设置: 在变量声明时,var 和 let 可以不用设置初始值。而const声明变量必须设置初始值。
(7)指针指向: let和const都是ES6新增的用于创建变量的语法。 let创建的变量是可以更改指针指向(可以重新赋值)。但const声明的变量是不允许改变指针的指向。
七、数据类型
1、基本数据类型(简单数据类型):直接将值存放栈里
number string boolean undefind null symbol、BigInt
2、引用数据类型(复杂数据类型):值存放在堆里面,栈里面保存的是地址,地址指向堆里面的值
object对象(里面包含function 、Array、Date、Math等等)
3、两者区别
赋值会在栈里面进行,所以复杂数据类型的赋值其实是地址的赋值,例如:let obj1 = obj 如果obj是复杂数据类型,那么这里是将obj的地址赋值给obj1 ,所以其他他们两个指向的堆里面的同一片位置(同一数据)
4、检测数据类型的方法
①typeof 只能检测基本数据类型(null 返回的是object)
②instanceof:只能检测引用数据类型
③Object.prototype.toString.call():基本类型和引用数据类型都能检测
八、NaN 也是一个number 类型 ,他是不规范的数学运算得到的结果
九、字符串string
1、转义符:\后面跟什么引号就把这个引号当作字符串来渲染
2、模板字符串也就是反引号
反引号可以用于字符串的拼接 如:练习生${time}的人;其中time是变量
十、检测数据类型
1、typeof
let age = '20' console.log(typeof age) 得到的结果为:string
①⭐⭐null的typeof结果为对象(object)
②⭐⭐undefined 指的是未定义的,变量声明但没有赋值结果就是undefined
2、instanceof:只能检测引用数据类型
3、Object.prototype.toString.call():基本类型和引用数据类型都能检测
十一、类型转化
1、隐式转化
运算时,内部自己对数据类型做的转化
数字转字符串(数字+空字符串)(因为字符串做+任何内容结果都是字符串)
字符串转数字(+str)或者(字符串-0)(因为除了+以外的- * /等运算都可以做隐式转化,将数字字符串转化成数字 )
2、显式转化⭐
①Number():转化为number类型,非数字字符串变成NaN
②parseInt():转换为number类型 并且保留整数部分
③parseFloat():转换为number类型 ,并返回一个浮点数。
④String():转换为字符串类型
⑤tostring():转换为字符串类型(num.tostring())
十二、交换两个变量
// 交换两个变量 , 注意[]前面加分号
let a = 123
let b = 567
;[a, b] = [b, a]
console.log(a, b)
// JS里面 一个是 ()前面加分号
// [] 前面加分号
- 注意:prompt 、表单等接收过来的数据默认是字符串类型
- 字符串做+任何内容结果都是字符串
- 除了+以外的- * /等运算都可以做隐式转化 ,将数字字符串转化成数字
- 但是+作为正号的时候可以隐式转化 如:+str (str是个数字字符串)