你不知道的JS(下):深入编程

你不知道的JS(下):深入编程

本文是《你不知道的JavaScript(下卷)》的阅读笔记,第一部分:深入编程。 供自己以后查漏补缺,也欢迎同道朋友交流学习。

原文地址

墨渊书肆/你不知道的JS(下):深入编程

代码与语句

程序是一组特定的计算机指令。指令的格式和组合规则被称为计算机语言(语法)。

语句

执行特定任务的一组单词、数字和运算符被称为语句。

javascript 复制代码
a = b * 2;
  • ab:变量
  • 2:字面值
  • =*:运算符
  • JS 语句通常以分号 ; 结尾。

表达式

语句由一个或多个表达式组成。表达式是对变量、值的引用,或者是其与运算符的组合。

执行程序

程序需要通过解释器或编译器翻译成计算机可理解的命令后执行。 JS 引擎实际上会即时编译(JIT)程序,然后立即执行编译后的代码。虽然 JS 常被称为解释型语言,但现代引擎的 JIT 过程使得其运行速度非常快。

实践环境

最简单的方法是使用浏览器(Chrome、Firefox 等)的开发者工具。

  • 输出console.log()(控制台输出)或 alert()(弹窗输出)。
  • 输入prompt()(获取用户输入)。

运算符

JavaScript 常用运算符包括:

  • 赋值=(将值保存在变量中)。
  • 算术+-*/%(取模)。
  • 复合赋值+=-=*=/=(如 a += 2 等同于 a = a + 2)。
  • 递增/递减++(递增)、--(递减)。
  • 对象属性访问.(如 obj.a)或 [](如 obj["a"])。
  • 相等==(宽松相等)、===(严格相等)。
  • 逻辑&&(与)、||(或)、!(非),用于表示复合条件。

值与类型

在编程术语中,对值的不同表示方法称为类型。JavaScript 提供了以下内置基本类型:

  • 数字 (number):用于数学计算。
  • 字符串 (string):一个或多个字符组成的文本。
  • 布尔值 (boolean)truefalse,用于决策判断。
  • 除此之外,还提供 数组对象函数 等复合类型。

类型转换

JavaScript 提供显式和隐式两种类型转换机制。

javascript 复制代码
var a = "42"; 
var b = Number(a); // 显式类型转换
console.log( a ); // "42" 
console.log( b ); // 42
console.log( a == b ); // true,隐式类型转换(宽松相等)

代码注释

编写代码不仅是给计算机看,也是给开发者阅读。良好的注释能显著提高代码的可读性,解释器会忽略这些内容。

变量

变量是用于跟踪值变化的符号容器。JavaScript 采用动态(弱)类型机制,变量可以持有任意类型的值。

ES6 块作用域声明

除了传统的 var,ES6 引入了更强大的变量声明方式:

  • let 声明 :创建块级作用域变量。相比 var,它解决了提升导致的逻辑混乱,并引入了"暂时性死区"(TDZ)。

  • const 声明 :用于创建只读常量。注意,const 锁定的是变量的赋值,而不是值本身。

    javascript 复制代码
    const a = [1, 2, 3]; 
    a.push( 4 ); // 成功!内容可以修改
    console.log( a ); // [1, 2, 3, 4] 
    a = 42; // TypeError! 赋值被锁定

模板字面量

ES6 引入了反引号 ( ````` ) 界定的模板字面量,支持变量插值和多行字符串。

javascript 复制代码
var name = "Kyle"; 
var greeting = `Hello ${name}!`; // 插值解析
var text = `
Now is the time 
for all good men
`; // 支持多行

解构

解构是一种"结构化赋值"方法,可以从数组或对象中快速提取值。

javascript 复制代码
var [ a, b, c ] = [1, 2, 3]; 
var { x, y } = { x: 10, y: 20 };

块与条件判断

:使用 { .. } 将一系列语句组织在一起。

条件判断 :最常用的是 if 语句,根据条件的真假决定是否执行后续代码块。

javascript 复制代码
var bank_balance = 302.13; 
var amount = 99.99; 
if (amount < bank_balance) { 
    console.log( "I want to buy this phone!" ); 
}

循环

循环用于重复执行任务,每次执行被称为一次"迭代"。

  • while / do..while:根据条件循环。
  • for:更紧凑的循环形式,包含初始化、测试条件和更新。
javascript 复制代码
var i = 0;
while (true) { 
    if ((i <= 9) === false) { 
        break; // 停止循环
    } 
    console.log(i); 
    i = i + 1; 
} 

for (var i = 0; i <= 9; i++) { 
    console.log( i ); 
}

函数

函数是可复用的代码片段,可以接受参数并返回值。

javascript 复制代码
function printAmount(amt) { 
    console.log( amt.toFixed( 2 ) ); 
} 
function formatAmount() { 
    return "$" + amount.toFixed( 2 ); 
} 
var amount = 99.99; 
printAmount( amount * 2 ); // "199.98" 
amount = formatAmount(); 
console.log( amount ); // "$99.99"

作用域

在 JS 中,每个函数都有自己的作用域(词法作用域)。作用域是变量的集合及访问规则。

  • 只有函数内部的代码才能访问该作用域中的变量。
  • 作用域可以彼此嵌套:内层作用域可以访问外层作用域的变量,反之则不行。

小结

学习编程并不必然是复杂、费力的过程。我们需要熟悉几个基本的概念:

  • 运算符:在值上执行动作。
  • 值与类型:执行各种类型的动作需要值和类型,比如对数字进行数学运算,用字符串输出。
  • 变量:在程序的执行过程中需要变量来保存数据(也就是状态)。
  • 条件判断:需要 if 这样的条件判断来作出决策。
  • 循环:需要循环来重复任务,直到不满足某个条件。
  • 函数:需要函数将代码组织为逻辑上可复用的块。

在编程学习中,实践是绝对无法替代的。理论无法让你成为一个程序员,唯有动手尝试。

相关推荐
牛奶2 小时前
你不知道的JS(下):深入JS(下)
前端·javascript·电子书
牛奶2 小时前
你不知道的JS(下):总结与未来
前端·javascript·电子书
牛奶2 小时前
你不知道的JS(下):深入JS(上)
前端·javascript·电子书
CappuccinoRose3 小时前
HTML语法学习文档(五)
前端·html·html5·表单
硅基动力AI4 小时前
如何判断一个关键词值不值得做?
java·前端·数据库
yq1982043011565 小时前
使用Django构建视频解析网站 从Naver视频下载器看Web开发全流程
前端·django·音视频
李明卫杭州6 小时前
在 JavaScript 中,生成器函数(Generator Function)
前端·javascript
Lethehong6 小时前
从安装到实测:基于 Claude Code + GLM-4.7 的前端生成与评测实战
前端
恋猫de小郭6 小时前
iOS + AI ,国外一个叫 Rork Max 的项目打算替换掉 Xcode
android·前端·flutter