JavaScript基础知识点
JavaScript知识点
JavaScript是什么
1、运行在客户端的脚本语言
2、脚本语言:不需要翻译,运行过程中由js解释器逐行进行解释并执行
3、目前也可基于Node.js技术进行服务端编程
JavaScript权威网站:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
浏览器执行JS简介
- 渲染引擎:用来解析HTML与CSS,俗称内核,比如:chrome浏览器的blink,老版本的webkit
- JS 引擎:也称为JS解释器。用来读取网页中的JavaScript代码,对其处理后运行,比如: chrome 浏览器的 V8
浏览器本身并不会执行JS代码,而是通过内置JavaScript引擎(解释器)来执行JS代码。
JS引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所以JavaScript 语言归为脚本语言,会逐行解释执行。
JS的组成
JavaScript语法—-ECMAScript: 是由ECMA国际(原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网上应用厂泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMAScript语言的实现和扩展。(ECMAScript规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。)
Web APIs:
页面文档对象模型—-DOM:文档对象模型(DocumentObjectModel,简称DOM),是W3C组织推荐的处理可扩展标记语言的标准编程接口阔过 DOM 提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)。
浏览器对象模型—-BOM:(Browser ObjectModel,简称BOM)是指浏览器对象模型,它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,比如弹出框、控制浏览器跳转、获取分辨率等。
ECMAScript JavaScript(网景公司) JScript(微软公司)
标识符
标识符由:字母、美元符号$、下划线和数字组成,其中数字不能开头。
温馨提示:
中文也是合法标识符,但是不推荐使用。
JS数据类型
JS数据类型常见有:
原始数据类型:
数值:变量可存放数值,比如 100
字符串:字符串被包围在双引号或单引号中(文本),模板字符串:
1
2//用反斜号(英文输入下tab键上方键)包含字符串,内容拼接时变量用${}包裹
document.write(`大家好,我叫${name},今年${age}岁了`)布尔值:false、true(只此两个值)
特殊值:代表没有或空
null:一般代表对象为“没有”
undefined:一般代表数值为“没有”
合成类型:由原始数据类型组合而成,(object(对象))
- 对象:JavaScript 对象用花括号来书写。对象属性是 多组 name:value ,由逗号分隔。
类型转换
理解弱类型语言的特征,掌握显式类型转换的方法
在 JavaScript 中数据被分成了不同的类型,如数值、字符串、布尔值、undefined,在实际编程的过程中,不同数据类型之间存在着转换的关系。
隐式转换
某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
1 |
|
注:数据类型的隐式转换是 JavaScript 的特征,后续学习中还会遇到,目前先需要理解什么是隐式转换。
补充介绍模板字符串的拼接的使用
显式转换
编写程序时过度依靠系统内部的隐式转换是不严禁的,因为隐式转换规律并不清晰,大多是靠经验总结的规律。为了避免因隐式转换带来的问题,通常根逻辑需要对数据进行显示转换。
Number
通过 Number
显示转换成数值类型,当转换失败时结果为 NaN
(Not a Number)即不是一个数字。
1 |
|
断点调试
作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
浏览器打开调试界面
- 按F12打开开发者工具
- 点到源代码一栏 ( sources )
- 选择代码文件
断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
循环语句使用习惯
- 当明确了循环次数的时候推荐使用for循环
- 当不明确循环次数的时候推荐使用while循环
操作数组
数组的增、删、改、查:
数组元素修改:
选择数组元素进行重新赋值操作
1
2
3
4
5
6
7<script>
// 2. 通过索引值还可以为数组单重新赋值
document.write(classes[3]) // 结果为:小丽
// 重新为索引值为 3 的单元赋值
classes[3] = '小小丽'
document.wirte(classes[3]); // 结果为: 小小丽
</script>数组元素增加:
push()
方法将指定的元素添加到数组的末尾,并返回新的数组长度。**unshit()
**向数组头部添加一个单元1
2
3
4
5
6
7
8
9
10
11
12
13<script>
// 定义一个数组
let arr = ['html', 'css', 'javascript']
// 1. push 动态向数组的尾部添加一个单元
arr.push('Nodejs')
console.log(arr)
arr.push('Vue')
// 2. unshit 动态向数组头部添加一个单元
arr.unshift('VS Code')
console.log(arr)
</script>数组元素删除:
pop()
方法从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度。shift()
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。splice()
方法通过移除或者替换已存在的元素和/或添加新元素就地改变一个数组的内容1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<script>
// 定义一个数组
let arr = ['html', 'css', 'javascript']
//pop() 删除最后一个单元
arr.pop()
console.log(arr)
// shift() 删除第一个单元
arr.shift()
console.log(arr)
// splice(start, deleteCount),splice(起始位置-索引号,删除几个)动态删除任意单元
// 第二个值若不写就会从起始位置删除到最后
arr.splice(2, 1) // 从索引值为2的位置开始删除1个单元
console.log(arr)
</script>数组元素查找:数组名 + 数组下标访问数组数据,可采用for循环进行数组遍历。(常见应用:数据筛选)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<script>
// 重点案例
let arr = [2, 0, 6, 1, 77, 9, 54, 3, 78, 7]
// 1. 声明新的空的数组
let newArr = []
// 2. 遍历旧数组
for (let i = 0; i < arr.length; i++) {
if (arr[i] >= 10) {
// 3. 满足条件 追加给新的数组
newArr.push(arr[i])
}
}
// 4. 输出新的数组
console.log(newArr)
</script>具名函数和匿名函数
具名函数:
function fn() { }
function 函数名(形参列表) {函数体}
匿名函数:
let fn = function(){} //没有函数名
,匿名函数的调用可使用变量名加()具名函数和匿名函数的区别:
- 具名函数的调用可以写到任何位置
- 匿名函数的调用必须先声明函数表达式,后调用
立即执行函数(匿名函数的一种):定义后立即调用,不用再写函数调用语句。有两种写法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 1. 第一种写法
(function (x, y) {
console.log(x + y)
let num = 10
let arr = []
})(1, 2);
// (function(){})();
// (匿名函数)();()相当于调用
// 2.第二种写法
// (function () { }());
//(匿名函数()); 中间的()相当于调用
(function (x, y) {
let arr = []
console.log(x + y)
}(1, 3));注意:多个立即执行函数间必须要有逗号隔开!
对象使用(增、删、改、查)
1 | //使用属性 查 对象名.属性名 |
遍历对象
1 | let obj = { |
for in 不提倡遍历数组 因为 k 是 字符串