js基础语法
常量和变量
标识符: 标识符必须是字母, 下划线, 美元符号$和数字, 但必须是字母, 下划线,美元符号开头,依然是不能数字开头就行.标识符区分大小写.
声明
1 | var声明一个变量 |
数据类型
序号 | 名称 | 说明 |
---|---|---|
1 | number | 数值型,包括整型和浮点型 |
2 | boolean | 布尔型,true和false |
3 | string | 字符串 |
4 | null | 只有一个值null |
5 | undefined | 变量声明未赋值的;对象未定义的属性 |
6 | symbol | ES6新引入类型 |
7 | object | 是以上基本类型的复合类型,是容器 |
弱类型,不需要强制类型转换, 会隐式类型转换.
NaN,即Not a Number,转换数字失败, 它和任何值都不等,和自己也不等, 只能使用Number.isNaN
总结:
1 | 遇到字符串, 加号就是拼接字符串,所有非字符串隐式转换为字符串. |
三元运算符
条件表达式?真值:假值
等价于简单的if…else结构
函数, 匿名函数,函数表达式的差异
函数和匿名函数, 本质上都是一样的, 都是函数对象, 只不过函数由自己的标识符—函数名, 匿名函数u需要借助其他的标识符而已.
区别在于, 函数会声明提升, 函数表达式不会 .
高阶函数: 函数作为参数或返回 一个函数.
函数
1 | function 函数名(参数列表){ |
函数, 匿名函数, 函数表达式的差异
函数和匿名函数, 本质上都是一样的, 都是函数对象, 只不过函数有自己的标识符 – 函数名, 匿名函数需要借助其他的标识符而已.
区别在于, 函数会申明提升, 函数表达式不会.
1 | console.log(add(4, 6)); |
高阶函数
高阶函数: 函数作为参数或返回一个函数
箭头函数
箭头函数就是匿名函数,它是一种更加精简的格式.
箭头函数参数
如果一个函数没有参数,使用()
如果只有一个参数,参数列表可以省略小括号()
多个参数不能省略小括号,且使用逗号间隔.
箭头函数返回值.
如果函数体部分有多行,就需要使用{}, 如果有返回值使用return.
如果只有一行语句, 可以同时省略大括号和return.
只有return语句, 就不能省略大括号,
如果只有一条非return语句, 加上大括号, 函数就成了无返回值,
函数参数
普通参数
一个参数占一个位置,支持默认参数.
可变参数(rest parameters剩余参数)
js使用…表示可变参数(python用*手机多个参数)
1 | const sum = function (...args){ |
arguments对象
函数的所有参数会被保存在一个arguments的键值对对象中.
参数解构
和python类似, js提供了参数解构, 依然使用了…符号来结构.
1 | const add = (x, y) =>{console.log(x, y); return x + y}; |
函数返回值
python中可以使用return 1, 2 返回多值, 本质也是一个值, 就是一个元组.
表达式的值
类c的语言,都有一个概念 – 表达式的值
赋值表达式的值: 等号右边的值
逗号表达式的值:类c语言, 都支持逗号表达式, 逗号表达式的值, 就是最后一个表达式的值.
异常
抛出异常
js的异常语法和java相同, 使用throw关键字抛出.
使用throw关键字可以抛出任意对象的异常.
1 | throw new Error('new error'); |
捕获异常
try…catch语句捕获异常
try …catch…finally 语句捕获异常, finally保证最终一定执行.
问题: null和undefined的异同
1.undefined:是所有没有赋值变量的默认值,自动赋值。
2.null:主动释放一个变量引用的对象,表示一个变量不再指向任何对象地址。
当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null。
共同点:都是原始类型,保存在栈中变量本地。
不同点:
undefined——表示变量声明过但并未赋过值。
它是所有未赋值变量默认值,例如:
1 | var a; // a 自动被赋值为 undefined |
null——表示一个变量将来可能指向一个对象。
一般用于主动释放指向对象的引用,例如:
1 | var emps = ['ss','nn']; |
它是专门释放对象内存的一个程序。
- 在底层,后台伴随当前程序同时运行;引擎会定时自动调用垃圾回收期;
- 总有一个对象不再被任何变量引用时,才释放