定义式
var fn = function () {};
声明式 不是声明式就是定义式 声明式是function开头
function fn() {}
箭头函数 箭头函数里面的this总是指向最靠近的function 内部的this
var fn = () => {};
函数执行体只有返回值时 可以将大括号和return省略
var fn = () => this;
形参只有一个时 可以将小括号省略
var fn = a=> a * a;
等价于
var fn = function (a) {
return a * a;
};
箭头函数不能当成构造函数 也就是说箭头函数不能用new调用
箭头函数中不能使用arguments对象,一般用扩展运算符替代,以数组的形式存储 需要注意的是 箭头函数除了扩展运算符还有其他参数时 必须将扩展运算符表示的参数写后面
var fn = (a, ...x) => {
console.log(a, x); //1 [2, 3, 4]
};
fn(1, 2, 3, 4);
箭头函数的this指向不能改变 不能通过bind等关键字改变
模块化
js代码有三种方式将js脚本写在页面中
1.行内式:js引擎要去执行的标签的某些属性中
2.嵌入式
3.导入式:导入scr地址是一个js文件的路径 会加载js编码(jsonp)
行内式和导入式同时使用时 只会执行导入式中的js语法 想要同时使用 必须用import
dome文件
export function tool(){return 111}//必须通过export导出
export var a=10
//默认导出 在一个js文件中最多只能有一个
var b=20
var c=30
var fn=()=>{}
export default {b,c,fn,tool,a}// 将按需导出的写进默认导出中 想要按需导出和默认导出都可以
需要导入的文件
<!-- 引入外部js文件 -->
<script type="module">
import { a } from "./dome.js";
console.log(a); //10 取出了dome中导出的值
import { tool } from "./dome.js";
console.log(tool()); //111 按需导入 不会将文件全部导出 需要什么导出什么
默认导出接收可以用任何变量名 放大括号外面接收 大括号里面是按需导入的
import x from "./dome.js";
console.log(x.b); //20
console.log(x.c); //30