0.3 JavaScript Grammar
基础语法
类型检查
typeof
类型转换
- 调用string()函数,null和undefined则转化为 'null' , 'undefined'
null和undefined 调用toString()会报错 - js是弱类型语言,在进行计算时会自动的进行运算,注意一个值和一个字符的场景是直接进行拼接的
自增和自减
例如 a++和++a 都属于自增运算符,区别是对变量a的值进行自增的时机不同。a++是先进行取值,后进行自增。++a是先进行自增,后进行取值
逻辑和关系运算符
三元运算符
运算符的优先级
代码块
块作用域
流程控制语句
if
while
for
对象
可变类型
在对象创建完成,可以任意修改删除对象中的属性,注意如果有两个变量同时指向一个对象,通过一个变量修改对象时,另一个变量也会受影响
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//hello world 测试
// alert("hello world")
// console.log('hello world')
// document.write("hello world")
// let a = '1'
// console.log(typeof a)
// console.log( `${a}`)
// let a = prompt("第一个字")
// let b = prompt("第二个字")
// let c = prompt("第三个字")
// alert(a + b + c)
//案例一:1000元,存款利率为5%,多少年到5000
let money = 1000
let cnt =0
while (money <= 5000){
money *= 1.05
cnt++
}
document.write(cnt)
//使用Symbol通常是不希望外界访问的数据
let a = new Object();
a.name = "a"
a.ui = ""
let n = Symbol()
a[n] ="属性"
document.write(a.name , a[n])
console.log(a)
</script>
</head>
<body>
</body>
</html>
修改变量 修改对象>>>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//改变值
const fn = (a) => {
a = {}
a.name = "abc"
console.log(a)
}
let a = {name:"bbb"}
fn(a)
console.log(a)
//改变对象
const fn1 = (b) => {
b.name = "abc"
console.log(b)
}
let b = {name:"bbb"}
fn1(b)
console.log(b)
// Objectname: "abc"[[Prototype]]: Object
// js2.html?_ijt=8s6fqhni018uelpbckdaog1o05:15 Objectname: "bbb"[[Prototype]]: Object
// js2.html?_ijt=8s6fqhni018uelpbckdaog1o05:20 Objectname: "abc"[[Prototype]]: Object
// js2.html?_ijt=8s6fqhni018uelpbckdaog1o05:25 Objectname: "abc"[[Prototype]]: Object
</script>
</head>
<body>
</body>
</html>
函数
1. 函数的创建方式
函数声明
函数表达式
箭头函数
2. 函数的每次调用,都会重新创建默认值
3. 函数作为参数
const fn3 = (a) => {
console.log("hhhh" ,a)
}
fn3(() => {"hhhhha"})
//hhhh () => {"hhhhha"}
4. 函数的返回值
5. 作用域
6. 变量的提升
7. debug
8. 函数中的this
以函数形式调用和以方法形式调用
const obj = {
name :"tom",
fn3,
f(){
console.log(this.name)
function f1() {
console.log(this)
}
f1()
}
}
obj.f()
类
类是创建对象的模板
1. 构造函数
2. 封装,多态,继承
安全性,扩展性,灵活性
3. 原型
原型对象(prototype)对象中还有一些内容,会存储到其他的对象里(原型对象)在对象中会有一个属性用存储原型对象,这个属性做_ proto_原型对象也负责为对象存储属性当我们访问对象中的属性时,会优先访问对象自身的属性对象自身不包含该属性时,才会去原型对象中引找会添加到原型对象;原型的作用原型就相当于是一个公共的区域,可以被所有该类实例访问,可以将该类实例中,所有的公共属性(方法)统一存储到这样我们只需要创建一个属性
4. this
根据函数调用方式的不同,this的值也不同
1.以函数形式调用,this是 window
2,以方法形式调用,this是调用方法的对象
3.构造函数中,this是新建的对象
4,箭头函数没有自己的this,由外层作用域决定
数组
1. for-of语句
2. 深拷贝和浅拷贝
JavaScript数组方法(最全)
闭包
1. 回调函数
2. 闭包的生命周期
其他
1. 可变参数
2. call和apply
3. bind
4. 数组的解构
5. 对象的解构
6. 正则表达式
7. exec方法
8. 垃圾回收机制
9. Math库
10. Date库