2026.07.06
This commit is contained in:
@@ -1,3 +1,18 @@
|
|||||||
|
## name 变量名与 window.name
|
||||||
|
|
||||||
|
```js
|
||||||
|
// 假设你想声明一个数字类型的 name
|
||||||
|
var name = 123;
|
||||||
|
|
||||||
|
// 你以为它是数字,但它其实变成了字符串
|
||||||
|
console.log(typeof name); // 输出: "string" ❌
|
||||||
|
console.log(name + 1); // 输出: "1231" (字符串拼接,而不是数学加法) ❌
|
||||||
|
```
|
||||||
|
|
||||||
|
在浏览器中,`var name = 123;` 实际上等同于 `window.name = 123;`。而 `window.name` 是一个内置属性,浏览器在底层会强制调用 `String(123)`,将其变为 `"123"`。
|
||||||
|
|
||||||
|
参考:[Window: name property - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Window/name)
|
||||||
|
|
||||||
## 交互:alert、prompt 和 confirm
|
## 交互:alert、prompt 和 confirm
|
||||||
|
|
||||||
```js
|
```js
|
||||||
@@ -226,7 +241,9 @@ alert( undefined == 0 ); // false
|
|||||||
|
|
||||||
JavaScript 中有四个逻辑运算符:`||`(或),`&&`(与),`!`(非),`??`(空值合并运算符)。
|
JavaScript 中有四个逻辑运算符:`||`(或),`&&`(与),`!`(非),`??`(空值合并运算符)。
|
||||||
|
|
||||||
### 或运算寻找第一个真值
|
### 或运算
|
||||||
|
|
||||||
|
或运算:寻找**第一个真值**或**最后一个假值**。
|
||||||
|
|
||||||
一个或运算 `||` 的链,将返回第一个真值,如果不存在真值,就返回该链的最后一个值。
|
一个或运算 `||` 的链,将返回第一个真值,如果不存在真值,就返回该链的最后一个值。
|
||||||
|
|
||||||
@@ -252,7 +269,9 @@ true || alert("not printed");
|
|||||||
false || alert("printed");
|
false || alert("printed");
|
||||||
```
|
```
|
||||||
|
|
||||||
### 与运算寻找第一个假值
|
### 与运算
|
||||||
|
|
||||||
|
与运算:寻找第一个假值或最后一个真值
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// 如果第一个操作数是真值,
|
// 如果第一个操作数是真值,
|
||||||
@@ -410,3 +429,63 @@ alert( doNothing() === undefined ); // true
|
|||||||
```
|
```
|
||||||
|
|
||||||
## 函数表达式
|
## 函数表达式
|
||||||
|
|
||||||
|
在 JavaScript 中,函数不是“神奇的语言结构”,而是一种特殊的值。
|
||||||
|
|
||||||
|
函数声明语法:
|
||||||
|
|
||||||
|
```js
|
||||||
|
function sayHi() {
|
||||||
|
alert( "Hello" );
|
||||||
|
}
|
||||||
|
|
||||||
|
alert(sayHi); // 显示函数代码
|
||||||
|
```
|
||||||
|
|
||||||
|
函数表达式语法:
|
||||||
|
|
||||||
|
```js
|
||||||
|
let sayHi = function() {
|
||||||
|
alert( "Hello" );
|
||||||
|
};
|
||||||
|
|
||||||
|
alert(sayHi); // 显示函数代码
|
||||||
|
```
|
||||||
|
|
||||||
|
### 回调函数
|
||||||
|
|
||||||
|
```js
|
||||||
|
function ask(question, yes, no) {
|
||||||
|
if (confirm(question)) yes()
|
||||||
|
else no();
|
||||||
|
}
|
||||||
|
|
||||||
|
function showOk() {
|
||||||
|
alert( "You agreed." );
|
||||||
|
}
|
||||||
|
|
||||||
|
function showCancel() {
|
||||||
|
alert( "You canceled the execution." );
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用法:函数 showOk 和 showCancel 被作为参数传入到 ask
|
||||||
|
ask("Do you agree?", showOk, showCancel);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 与函数声明区别
|
||||||
|
|
||||||
|
函数表达式是在代码执行到达时被创建,并且仅从那一刻起可用。
|
||||||
|
|
||||||
|
函数声明则不同,在函数声明被定义之前,它就可以被调用。这是内部算法的缘故。当 JavaScript 准备 运行脚本时,首先会在脚本中寻找全局函数声明,并创建这些函数。
|
||||||
|
|
||||||
|
## 箭头函数
|
||||||
|
|
||||||
|
```js
|
||||||
|
let func = (arg1, arg2, ..., argN) => expression;
|
||||||
|
|
||||||
|
|
||||||
|
let func = function(arg1, arg2, ..., argN) {
|
||||||
|
return expression;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user