Skip to content

Commit

Permalink
js 函数声明
Browse files Browse the repository at this point in the history
  • Loading branch information
realgeoffrey committed Sep 2, 2024
1 parent 789cd14 commit c2b503a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
9 changes: 5 additions & 4 deletions 网站前端/JS学习笔记/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@

>函数名绑定在函数表达式内部函数体中。
>1. 通过**函数声明****函数表达式**创建的函数,在加载脚本时和其他代码一起解析(编译时);通过**构造函数**定义的函数,在构造函数被执行时(运行时)才解析函数体字符串。
>1. 通过**函数声明****函数表达式**创建的函数,在加载脚本时和其他代码一起解析(编译时),但只有函数声明会被赋值,函数表达式不会被赋值、仅`var`声明变量;通过**构造函数**定义的函数,在构造函数被执行时(运行时)才解析函数体字符串。
>2. 不推荐通过~~构造函数~~创建函数,因为作为字符串的函数体可能会阻止一些JS引擎优化,也会引起其他问题。
3. ~~构造函数~~
Expand Down Expand Up @@ -351,9 +351,11 @@
1. 也会被JS引擎提升到当前执行的作用域顶部声明(函数声明就等同于赋值),因此代码中函数的调用可以出现在函数声明之前。
2. 函数声明不应当出现在~~语句块~~内(如:条件语句),语句块的函数也会提前声明,导致语义不清容易出错。
>在非严格模式下,块内函数声明的行为很奇怪。请勿使用它们。在严格模式下,块内函数声明仅在块内作用域中 或 不允许。
3. 函数表达式(Function expressions)声明
必须先声明:`var a = function () {...};`才可以使用,声明会被提前,但赋值不会被提前
必须先声明:`var a = function () {...};`才可以使用,`a`声明会被提前,`a`赋值不会被提前
><details>
><summary>e.g.</summary>
Expand Down Expand Up @@ -3141,8 +3143,7 @@ fixme: chrome如何查内存和内存泄漏,Node.js如何查隐蔽的内存泄
1. 写法:
>1. `function`关键字当作一个**函数声明**的开始,函数声明的后面不能跟圆括号;
>2. 将函数声明包含在圆括号中,表示**函数表达式**,函数表达式的后面可以跟圆括号,表示执行此函数。
>`function`关键字当作一个**函数声明**的开始,函数声明的后面不能跟圆括号;将函数声明包含在圆括号中,表示**函数表达式**,函数表达式的后面可以跟圆括号,表示执行此函数。
```js
/* 建议方式 */
Expand Down
2 changes: 2 additions & 0 deletions 网站前端/前端内容/标准库文档.md
Original file line number Diff line number Diff line change
Expand Up @@ -1807,6 +1807,8 @@ JS内部,字符以UCS-2(UTF-16的子级)的格式储存。UTF-16结合了
`implements``interface``let``package``private``protected``public``static``yield`
2. 不允许在语句块(`if``for`)中使用函数声明。
若允许,则函数声明在语句块内是块级作用域效果(仅在语句块内生效)。
---
## ES6
Expand Down

0 comments on commit c2b503a

Please sign in to comment.