对象和函数:匿名函数-具名函数-立即执行函数
匿名函数
匿名函数是指没有名字的函数
具名函数是指有名字的函数
语法格式
// 具名函数
语法格式:
function 函数名(){ } // 匿名函数
语法格式:
function () {} 匿名函数不能直接用,一般会将他 【赋值】给某个变量,并且这个变量的名字相当于函数的名字。
例:
let aa = function () {alert('匿名函数')
} 匿名函数的调用
let aa = function () {alert('匿名函数的调用')
}
aa() 匿名函数和具名函数的区别
相同点:
都可以有参数、返回值。
let bb = function (x,y) {return x + y;
};
let z = bb(10,5); 不同点:
具名函数存在着函数提升,函数提升是指可以在声明函数之前就去调用它。
fn()function fn() {console.log("具名函数有函数提升,可以先调用再声明")} 匿名函数一般赋值给变量使用时,也叫函数表达式,不存在变量提升。
// 函数表达式// nn()// 写在前面会报错function nn() {console.log("具匿名函数没有函数提升,不可以先调用再声明")}
nn()// 具匿名函数没有函数提升,不可以先调用再声明 立即执行函数
所谓立即执行函数(自执行函数)
函数的定义和调用可以认为是同时进行。
// 写法1
(function cc() {console.log('立即执行函数/自执行函数');
})(); // 立即执行函数/自执行函数// 写法2
(function dd() {console.log('另一个立即执行函数/自执行函数');
}()); // 另一个立即执行函数/自执行函数 立即执行函数可以传参数
(function (x) { // 形参consloe.log(x);
})(10); // 实参(function (x,y) { // 形参consloe.log(x + y);
})(10,1); // 实参 立即执行函数可以有返回值
let z = (function (x,y) { // 形参consloe.log(x + y); // 15renturn x + y;
})(10,1); // 实参
consloe.log(z); // 15 在使用立即执行函数时,需要注意必须要添加分号或其他运算符号。
x = 10;
(5 + 2) * 2 在大多数情况下可以省略分号(结束符),但是在使用立即执行函数时不可以省略。
立即执行函数用法:可以解决或者避免变量的污染。
变量污染:如果某个人定义了一个变量,另外一个人将变量的值改动了,变量的值改动,执行逻辑会出现错误。
let i = 0;
// ...
// for()
// 中间是其他代码
// ...
i = 20;
// 上述代码产生了变量污染 (function () {// 局部作用域let i = 0;
})();(function () {// 局部作用域let i = 20;
})();上述变量之间互相不影响,避免变量污染。 用法:
首页
// A写了一个a.js
// B写了一个b.js
a.js
// let i = 0
// while(i < 10) {
// console.log(i)
// i++
// }
// i变量是全局变量// // 通过立即执行函数解决变量污染
(function(){let i = 0;while(i < 10) {console.log(i);i++;};
})();
// i变量是函数作用域// 通过普通函数解决变量污染
// 先定义再调用
function A() {let i = 0;while(i < 10) {console.log(i);i++;};
}
A(); b.js
// let i = 20;
// console.log(i);
// i变量是全局变量// 通过立即执行函数解决变量污染
(function(){let i = 20;console.log(i);
})();
// i变量是函数作用域// 通过普通函数解决变量污染
// 先定义再调用
function B() {let i = 20;console.log(i);
}
B(); 对象
对象是JS当中的数据类型
数据类型(基础类型):数值、字符、布尔、undefined
对象是复杂的数据类型。
语法:
数组的语法格式为:[] // 数组字面量
字符串的语法格式为:'' “” `` // 字符串字面量
对象的语法格式为:{} // 对象字面量 let t = {} // 空白对象
// 语法
let o = {属性1: 值1,属性2: 值2,属性n: 值n,
} let user = {name: '黄昏',age: 28,gender: '男',
};
console.log(user); 对象的使用:
对象名[属性名]
// user[name] // 不加''会被识别成变量
console.log(user['name']); // 黄昏 对象名.属性名
nsole.log(user.age); // 28
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
