对象和函数:匿名函数-具名函数-立即执行函数

匿名函数

  • 匿名函数是指没有名字的函数

  • 具名函数是指有名字的函数

语法格式

// 具名函数
语法格式:
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); // 15
  renturn 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

<script>
  <script src='./a.js'></script>
  <script src='./b.js'></script>
</script>

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

猜你喜欢

转载自blog.csdn.net/m0_62181310/article/details/129256552
今日推荐