"这篇JavaScript基础笔记涵盖了JS的基本概念、语法特性以及常见的操作,包括JS的位置、输入输出、变量、数据类型、运算符、表达式、数组、函数、作用域、预解析、对象、DOM操作等内容,旨在帮助初学者建立扎实的JavaScript基础。"
1. **JS的位置**
- 行内式JS:直接在HTML标签的`onEvent`属性中写入JavaScript代码。
- 内嵌式JS:将JS代码放在`<script>`标签内,通常位于HTML文档的`<head>`或`<body>`部分。
- 外部JS:将JS代码编写在单独的.js文件中,通过`<script src="filename.js"></script>`引入到HTML文档。
2. **输入输出**
- JavaScript通常通过控制台输出(console.log())进行输出,输入则相对复杂,通常需要用户交互(如表单输入)或特定API实现。
3. **变量**
- 变量声明:使用`var`, `let`或`const`关键字声明变量。
- 特殊情况:`var`具有函数作用域,而`let`和`const`具有块级作用域。
- 动态数据类型:JavaScript是弱类型语言,变量的数据类型可以在运行时改变。
4. **数据类型**
- 八进制、十六进制表示法用于数值。
- 数字范围:JavaScript的Number类型可表示很大范围的数值,包括正负无穷大。
- 特殊值:NaN(非数字),Infinity,-Infinity。
- 字符串拼接:使用加号(+)连接字符串。
- 布尔型与数字型相加:布尔值转换为1(true)或0(false)后进行数学运算。
- NaN, undefined, null与数字相加:这些特殊值与其他类型相加会有特定结果。
- 数据类型检测:使用`typeof`操作符。
- 转换:`toString()`转为字符串,`Number()`或`parseInt()`转为数字,`!!`转为布尔值。
5. **运算符**
- 浮点数精度问题:JavaScript中的浮点数运算可能存在精度误差。
- 比较运算符:`==`进行等值比较,`>`, `<`等进行大小比较,会进行类型转换。
- 逻辑运算符:`&&`(逻辑与),`||`(逻辑或),`!`(逻辑非)。
- 短路运算:逻辑与和逻辑或的短路特性,如果已知结果,不会计算后面表达式。
6. **表达式**
- `switch`表达式:注意`break`语句防止多个分支被执行。
7. **函数**
- 参数个数与形参可以不匹配:多余的实际参数会被忽略,不足的参数可以用`arguments`对象补足。
- 函数无返回值:不使用`return`语句,函数默认返回`undefined`。
8. **作用域**
- 全局变量在整个脚本中都可访问,局部变量只在函数内部有效。
- 无块级作用域:`for`、`if`等代码块不会创建新的作用域。
- 作用域链:查找变量时,会沿着函数作用域链向上搜索。
9. **对象**
- 创建对象:字面量创建、构造函数创建、`new Object()`创建。
- Math对象:提供数学运算,如`Math.floor()`取整,`Math.random()`生成随机数。
- Date对象:处理日期和时间。
- Array对象:数组操作方法,如`push()`, `pop()`, `sort()`, `join()`等。
- String对象:字符串操作方法,如`substring()`, `charAt()`, `indexOf()`等。
10. **DOM**
- DOM(文档对象模型)是HTML和XML文档的编程接口。
- 获取元素:`getElementById()`, `getElementsByTagName()`, `getElementsByClassName()`, `querySelector()`/`querySelectorAll()`。
- 事件:改变元素内容、修改样式、排他思想(如单选按钮)等。
- 节点操作:包括创建、删除、复制和移动节点等。
这只是一个简略的概括,JavaScript的基础知识远不止这些,还包括正则表达式、异常处理、事件委托、Ajax、Promise、ES6新特性等更深入的内容。对于想要深入学习JavaScript的开发者来说,理解并掌握这些基础知识至关重要。