【JavaScript】17_debug,立即执行函数 与 严格模式

时间:2023-02-19 22:10:43

14、debug

<script>

//debugger // 在代码中打了一个断点

console.log(a) // 2

var a = 1

console.log(a) // 1

function a() {
alert(2)
}

console.log(a) // 1

var a = 3

console.log(a) // 3

var a = function () {
alert(4)
}

console.log(a) // 4

var a

console.log(a) // 4
</script>

15、立即执行函数

立即执行函数(IIFE)

  • 立即是一个匿名的函数,并它只会调用一次
  • 可以利用IIFE来创建一个一次性的函数作用域,避免变量冲突的问题
<script>
/*
在开发中应该尽量减少直接在全局作用域中编写代码!
所以我们的代码要尽量编写的局部作用域
如果使用let声明的变量,可以使用{}来创建块作用域
*/
{
let a = 10
}

{
let a = 20
}

// function fn(){
// var a = 10
// }

// fn()

// function fn2(){
// var a = 20
// }

// fn2()

//希望可以创建一个只执行一次的匿名函数

/*
立即执行函数(IIFE)
- 立即是一个匿名的函数,并它只会调用一次
- 可以利用IIFE来创建一个一次性的函数作用域,避免变量冲突的问题
*/
(function(){
let a = 10
console.log(111)
}());


(function(){
let a = 20
console.log(222)
}())
</script>

18、严格模式

JS运行代码的模式有两种:

正常模式

  • 默认情况下代码都运行在正常模式中, 在正常模式,语法检查并不严格 它的原则是:能不报错的地方尽量不报错
  • 这种处理方式导致代码的运行性能较差

严格模式

  • 在严格模式下,语法检查变得严格 --------> "use strict" 1.禁止一些语法 2.更容易报错 3.提升了性能
  • 在开发中,应该尽量使用严格模式, 这样可以将一些隐藏的问题消灭在萌芽阶段, 同时也能提升代码的运行性能
<script>
"use strict" // 全局的严格模式
let a = 10
// console.log(a)

function fn(){
"use strict" // 函数的严格的模式
}
</script>