jsgrammer
计算机编程基础
能够说出什么是编程语言
能够区分编程语言和标记语言的不同
能够说出常见的数据存储单位及其换算关系
能够说出内存的主要作用以及特点
关键词:编程语言 计算机基础
编程语言
-
编程
编程:计算机为了解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程
计算机程序:计算机所执行的一系列指令集合,而程序全部都是我们所掌握的语言来编写的,所以,人们要控制计算机一定要通过计算机语言向计算机发出命令
注意:计算机指的是任何能够执行代码的设备
-
计算机语言
计算机语言指用于人与计算机之间通讯的语言,它是人与计算机之间传递信息的媒介
计算机语言的种类非常多,总的来说可以分成机器语言、汇编语言、高级语言三大类
实际上计算机最终执行的都是机器语言,它是由0和1组成的二进制数,二进制是计算机语言的基础
-
编程语言
可以通过类似于人类语言的语言来控制计算机,让计算机为我们做事情,这样的语言就叫做编程语言ProgramminLanguage
编程语言是用来控制计算机的一系列指令,它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,如今通用的编程语言有两种形式:汇编语言和高级语言
汇编语言和机器语言实质是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,容易识别和记忆
高级语言主要相对于低级语言而言,它并不是特质某一种具体的语言,而是包括了很多编程语言
-
翻译器
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,为此,我们需要一个翻译器,
翻译器可以将我们所编写的源代码转换为机器语言,这也被称为二进制化,记住0和1
-
编程语言和标记语言的区别
编程语言有很强的逻辑和行为能力,在编程语言里,你会看到很多if else、for、while等具有逻辑性和行为能力的指令,这是主动的
标记语言不用向计算机发出指令,常用于格式化和链接。标记语言存在是用来被读取的,它是被动过的
计算机基础
-
计算机组成
计算机
硬件
输入设备 鼠标、键盘、手写板、摄像头等
输出设备 显示器、打印机、投影仪等
CPU 负责处理数据和运算
硬盘 负责存储数据,硬盘永久存储数据,内存暂时存储数据
内存
软件
系统软件 window、linux、macos
应用软件 浏览器、qq、word
-
数据存储
2.1 计算机内部使用二进制0和1来表示数据
2.2 所有数据,包括文件、图片等最终都是以二进制数据0和1的形式存放在硬盘的
2.3 所有程序,包括操作系统,本质都是各种数据,也以二进制数据的形式存放在硬盘中。
2.4 硬盘、内存都是保存的二进制数据
-
数据存储单位
bit<byte<kb<mb<<gb<tb<...
位bit:1bit可以保存一个0和1(最小的存储单位)
字节Byte:1B = 8b
千字节KB:1KB = 1024B
兆字节MB:1MB = 1024KB
吉字节GB:1GB = 1024MB
太字节TB:1TB = 1024GB
......
-
程序运行
4.1 打开某个程序时,先从硬盘中把程序的代码加载带内存中
4.2 CPU执行内存中的代码
注意:之所以要内存的一个重要原因,是因为cpu运行太快了,如果只是从硬盘中读取数据,会浪费CPU性能,所以,才使用存取速度更快的内存保存运行时的数据。(内存是电、硬盘是机械)
初识js
能够说出js是什么
能够直到js的发展历史
能够说出浏览器执行js的原理
能够说出js由哪三部分组成
能够写出js三个输入输出语句
初识js
-
js历史
-
布兰登艾奇(BrendanEich,1961~)
-
布兰登艾奇在1995年利用10天完成js设计
-
网景公司最初命名位LiveScript,后来在与Sun合作之后将其改名为JavaScript
-
-
js是什么
-
js是世界上最流行的语言之一,是一种运行在客户端的脚本语言Script
-
脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来解释并执行
-
现在也可以基于node.js进行服务器端编程
-
-
js的作用
-
表单动态校验(密码强度检测) -- js产生最初的目的
-
网页特效
-
服务器端开发
-
桌面程序
-
App
-
控制硬件-物联网
-
游戏开发
-
-
html/css/js的关系
-
html/css标记语言 -- 描述类语言 结构/表现
-
js脚本语言 -- 编程语言 行为
-
-
浏览器执行js简介
-
渲染引擎和js引擎
-
渲染引擎:用来解析html和css,俗称内核
-
js引擎:也成为js解释器,用来读取网页中的js代码,对其处理后运行,比如chrome浏览器的V8
-
浏览器本身并不会执行js代码,而是通过内置js引擎/js解释器来执行js代码,js引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所以js语言归为脚本语言,会逐行解释执行
-
-
js组成
js
ECMAScript js语法
Dom 网页文档对象模型
Bom 浏览器对象模型
6.1 ECMAScript
-
ECMAScript是由ECMA国际(原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网商应用广泛,它往往被称为JavaScript网景公司或JScript微软公司,但实际上后两者是ECMAScript语言的实现和扩展
-
ECMAScript规定了js的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套js语法工业标准
6.2 DOM -- 文档对象模型
-
文档对象模型DocumentObjectModel,是W3C组织推荐的处理可扩展标记语言的标准编程接口,通过DOM提供的接口可以对页面上的各种元素进行操作
6.3 BOM -- 浏览器对象模型
-
浏览器对象模型BrowserObjectModel,提供了独立于内容,可以与浏览器窗口进行互动的对象结构,通过BOM可以操作浏览器窗口
-
-
js初体验
-
行内、内嵌、外部
-
alert('如果我是dj,你还爱我吗')
js注释
单行注释、多行注释
js输入输出语句
| 方法 | 说明 | 归属 |
|---|---|---|
| alert(msg) | 浏览器弹出警示框 | 浏览器 |
| console.log(msg) | 浏览器控制台打印输出信息 | 浏览器 |
| promote(info) | 浏览器弹出输入框,用户可以输入 | 浏览器 |
变量
能够说出变量的主要作用
能够写出变量的初始化
能够说出变量的命名规范
能够画出变量是如何在内存中存储的
能够写出交换变量的案例
变量的概述
-
什么是变量
-
变量就是一个装东西的盒子
-
变量是用于存放数据的容器,我们通过变量名获取数据,设甚至可以修改数据
-
本质:变量是程序在内存中申请的一块用来存储数据的空间
-
变量的使用
-
步骤
-
声明变量 格式:var 变量名 -- var age
var是一个js关键字,用来声明变量(variable变量的意思),使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管
age是程序员定义的变量名,我们要通过变量名来访问内存中分配的空间
-
赋值 格式:变量名 = 值 -- age = 18
=用来把右边的值赋给左边的变量空间中,此处代表赋值的意思
变量值是程序员保存到变量空间里的值
-
变量的初始化 格式:var 变量名 = 值
声明一个变量并赋值,我们称之为变量的初始化
-
变量语法扩展
-
更新变量
一个变量被重新赋值后,它原有的值就会被覆盖,变量值将以最后依次赋的值为准
-
同时声明多个变量
同时声明多个变量时,只需要写一个var,多个变量名之间使用英文逗号隔开
-
声明变量的特殊情况
-
只声明不赋值
-
不声明不赋值使用
-
不声明只赋值使用
-
变量命名规范
-
由字母(A-Za-z)、数字(0-9)、下划线(_)、美元符号($)组成
-
严格区分大小写
-
不能以数字开头
-
不能是关键字、保留字
-
变量名必须有意义
-
遵守驼峰命名法
-
尽量不使用name作为变量名,name在一般的浏览器具有其特殊意义
交换变量案例
数据类型
能够说出五种简单数据类型
能够使用typeof获取变量的类型
能够说出1~2种转换为数值型的方法
能够说出1~2种转换为字符型的方法
能够说出什么是隐式转换
数据类型简介
-
为什么需要数据类型?
在计算机种,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用内存空间,于是定义了不同的数据类型
-
变量的数据类型
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了将如何代表这些值的位存储到计算机内存种。js是一种弱类型或者说动态语言,这意味着不用提前声明变量的类型,在程序的运行过程种,类型将会被自动确定
在代码运行时,变量的数据类型是由js引擎根据 = 右边变量的值的数据类型来判断的,运行完毕之后,变量就确定了数据类型
js拥有动态类型,同时意味着相同的变量可用作不同的类型
简单数据类型
-
简单数据类型(Number,String,Boolean,Undefined,Null)
-
复杂数据类型 (object)
| 简单数据类型 | 说明 | 默认值 |
|---|---|---|
| Number | 数字型,包含整型值和浮点型值 | 0 |
| String | 字符串类型,js里,字符串都带引号 | "" |
| Boolean | 布尔值类型,如true和false 等价于1和0 | false |
| Undefined | var a;声明了变量a但是没有给值,此时a=undefined | undefined |
| Null | var a = null;声明了变量a为空值 | null |
Number
-
数字型进制
最常见的进制有二进制、八进制、十进制、十六进制
在js中八进制前面加0,十六进制前面加0x
-
数字型范围
js中数字型的最大值和最小值
-
数字型三个特殊值
无穷大、无穷小、非数值
-
isNaN()
String
-
字符串可以是引号中的任意文本,其语法为双引号""和单引号'',因为HTML标签内的属性使用的是双引号,js这里我们更推荐使用单引号
-
字符串引号嵌套
js可以用双引号嵌套单引号,或者用单引号嵌套双引号(外双内单,外单内双)
-
字符串转义字符
转义符 解释说明 \n 换行符 \ 斜杠\ ' ''单引号 " ""双引号 \t tab缩进 \b 空格
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// "" ''
var str = "pink";
var str1 = 'pink';
// 引号嵌套
var str2 = "我是'pink'老师";
var str3 = '我是"pink"老师';
// 转义字符
var str4 = '我要\n换行了';
// 输出到控制台
console.log(str);
console.log(str1);
console.log(str2);
console.log(str3);
console.log(str4);
</script>
</head>
<body>
</body>
</html>
-
字符串长度以及拼接
-
通过字符串的length属性可以获取整个字符串的长度
-
字符串 + 任何类型 = 新的字符串 数值相加,字符相连
-
字符串拼接加强,通过和字符串相连的方式实现变量与字符串相连,引引加加
-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 获取字符串的长度
var str = 'my name is andy';
console.log(str.length);
// 字符串拼接
console.log('zhang' + 'san');
console.log('zhang' + 18);
console.log('zhang' + false);
console.log('zhang' + undefined);
console.log('zhang' + null);
// 字符串拼接加强
var age = prompt('请输入您的年龄:');
console.log('pink' + age + '岁');
</script>
</head>
<body>
</body>
</html>
Boolean、Undefined和Null
-
布尔型有两个值:true和false,其中true/1表示真对,而false/0表示假错
-
一个声明后没有赋值的变量会有一个默认undefined,如果进行相连或者相加时,注意结果
-
一个声明变量给null值,里面存的值为空(学习对象时,会深入了解null)
获取变量数据类型
-
typeof可用来获取检测变量的数据类型
-
字面量
字面量是源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值
-
数字字面量:8,9,10
-
字符串字面量:'黑马程序员','前端'
-
布尔字面量:true,false
-
......
数据类型转换
把一种数据类型的变量转换成另一种数据类型
-
转换成字符串类型
| 方式 | 说明 | 案例 |
|---|---|---|
| toString() | 转换成字符串 | |
| String()强制转换 | 转换成字符串 | |
| 加号拼接字符串隐式转换 | 和字符串拼接的结果都是字符串 |
-
转换成数字型
| 方式 | 说明 | 案例 |
|---|---|---|
| parseInt(string) | 将string类型转成整数数值类型,取整去小数,去尾 | |
| parseFloat(string) | 将string类型转成浮点数数值类型 | |
| Number()强制转换 | 将string类型转换成数值型 | |
| - * / 隐式转换 | 利用算术运算隐式转换为数值型 |
-
转换成布尔型
-
代表空、否定的值都会被转换为false,如""、0、NaN、undefined、null
-
其余值都会被转换为true
-
| 方式 | 说明 | 案例 |
|---|---|---|
| Boolean() 函数 | 其他类型转成布尔值 |
-
扩展
解释性语言和编译型语言
翻译器翻译的方式有两种:一种是编译,另一种是解释,两种方式之间的区别在于翻译的事件点不同
编译器是在代码执行之前进行编译,生成中间代码文件
解释器是在运行时进行及时解释,并立即执行(当编译器以解释的方式运行时,也称为解释器)
标识符、关键字、保留字
标识符:开发人员为变量、属性、函数、参数取的名字,标识符不能是关键字和保留字
关键字:js本身已经使用了的字,不能再用它们充当变量名、方法名
保留字:预留的关键字,同样不能使用它们当变量名或方法名
运算符
运算符导读
能够使用常用运算符
能够说出前置递增和后置递增的区别
能够说出运算符的优先级
表达式:是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合,即数字、运算符、变量的组成的式子
返回值:表达式最终都会有一个结果,返回给我们,即返回值
运算符
-
运算符operator也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号
-
常用的运算符
-
算数运算符
-
递增递减运算符
-
比较运算符
-
逻辑运算符
-
赋值运算符
-
算数运算符
算术运算符使用的符号,用于执行两个变量或值的算数运算
| 运算符 | 描述 | 实例 |
|---|---|---|
| + | 加 | |
| - | 减 | |
| * | 乘 | |
| / | 除 | |
| % | 取余数(取模) |
递增和递减运算符
如果需要反复给数字变量添加或减去1,可以使用递增++和递减--运算符来完成
在js中,递增++和递减--既可以放在变量前面,也可以放在变量后面。放在前面时,我们可以称为前置递增/递减运算符,
放在变量后面时,我们可以成称为后置递增/递减运算符
注意:递增和递减必须和变量配合使用
-
前置递增运算符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 1.想让一个变量自己加1
var num = 1;
// num = num + 1; 比较麻烦
// 前置自增运算符
++num;
console.log(num);
// 先自加,后返回值
var p = 10;
console.log(++p + 10); // 11
</script>
</head>
<body>
</body>
</html> -
后置自增运算符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
var num = 10;
num++; // num = num + 1
console.log(num);
// 前置自增和后置自增,如果单独使用,效果相同的
// 后置自增 先返回原值 后自加1
</script>
</head>
<body>
</body>
</html> -
练习
比较运算符
比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较运算的结果
| 运算符名称 | 说明 | 案例 | 结果 |
|---|---|---|---|
| > | 大于号 | ||
| < | 小于号 | ||
| >= | 大于等于号 | ||
| <= | 小于等于号 | ||
| == | 判等号(会转型) | ||
| != | 不等号 | ||
| === !== | 全等要求值和数据类型都一致 |
逻辑运算符
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。开发多用于多个条件的判断
| 逻辑运算符 | 说明 | 案例 |
|---|---|---|
| && | 逻辑与 and | |
| || | 逻辑或 or | |
| ! | 逻辑非 not |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 逻辑与 两侧有一侧为假,结果为假 两侧都为真,结果为真
console.log(3 > 5 && 3 > 2); // f&&t f
console.log(3 < 5 && 3 > 2); // t&&t t
// 逻辑或 两侧有一侧为真,结果为真 两侧都为假,结果为假
console.log(3 > 5 || 3 > 2); // f&&t t
console.log(3 > 5 || 3 < 2); // f&&f f
// 逻辑非
console.log(!true); // f
</script>
</head>
<body>
</body>
</html>
短路运算(逻辑中断)
短路运算原理:当有多个表达式(值)时,左边的表达式/值可以确定结果时,就不再继续运算右边的表达式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 短路 逻辑中断
// && 如果表达式1为假,则返回表达式1 如果表达式1为真,则返回表达式2
console.log(123 && 456); // 456
console.log(0 && 456); // 0
// || 如果表达式1为真,则返回的是表达式1,如果表达式1为假,则返回表达式2
console.log(123 || 456); // 123
console.log(0 || 456); // 456
// 逻辑中断会影响程序的运行结果
var num = 0;
console.log(0 && num++);
console.log(num); // 0
</script>
</head>
<body>
</body>
</html>
赋值运算符
用来把数据赋值给变量的运算符
| 赋值运算符 | 说明 | 案例 |
|---|---|---|
| = | 直接赋值 | |
| +=、-= | 加、减一个数后再赋值 | |
| *=、/=、%= | 乘、除、取模后再赋值 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 赋值运算符
var num = 10;
console.log(num); // 10
num += 5;
console.log(num); // 15
num *= 2;
console.log(num); // 30
</script>
</head>
<body>
</body>
</html>
运算符优先级
| 优先级 | 运算符 | 顺序 |
|---|---|---|
| 1 | 小括号 | () |
| 2 | 一元运算符 | ++、--、! |
| 3 | 算数运算符 | 先*、/、% 后 + - |
| 4 | 比较运算符 | >、>=、<、<=、 |
| 5 | 相等运算符 | ==、!=、===、!== |
| 6 | 逻辑运算符 | 先&&后|| |
| 7 | 赋值运算符 | = |
| 8 | 逗号运算符 | , |
js流程控制分支结构
能够使用if分支语句
能够使用switch语句
能够使用三元表达式
流程控制
在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能
即:流程控制就是来控制我们的代码按照什么结构顺序来执行
流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构,这三种结构代表三种代码执行顺序
顺序流程控制
顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
分支流程控制if语句
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果
三元表达式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// 如果条件表达式结果为真,则返回表达式1的值,如果条件表达式结果为假,则返回表达式2的值
var result = 1 > 2 ? true : false;
console.log(result);
</script>
</head>
<body>
</body>
</html>
分支流程控制switch语句
switch语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用switch
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
// switch 条件表达式的结果和值是全等关系 break穿透
// 需求:用户在弹出框里面输入一个水果,如果有就弹出该水果的价格,如果没有该水果就弹出没有此水果
var fruit = prompt('请输入要查询的水果:');
switch (fruit) {
case '西瓜':
alert(2.5);
break;
case '菠萝':
alert(3);
break;
case '榴莲':
alert(9.9);
break;
default:
alert('没有此水果');
break;
}
</script>
</head>
<body>
</body>
</html>
switch和if else if语句的区别
-
一般情况下,它们两个语句可以相互替换
-
switch...case语句通常处理case为比较确定之的情况,而if...else...语句更加灵活,常用于判断范围(大于、等于某个范围)
-
switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而if...else语句有几种条件,就得判断多少次
-
当分支比较少时,if...else语句的执行效率比switch语句高
-
当分支比较少时,switch语句的执行效率比较高,而且机构更清晰
js流程控制循环结构
能够说出循环的目的
能够说出for循环的执行过程
能够使用断点调试来观察的代码的执行过程
能够使用for循环完成累加求和等案例
能够使用双重for循环完成乘法表案例
能够说出while循环和dowhile循环的区别
能够说出break和continue的区别
循环
循环的目的:在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句
在js中,主要有三种类型的循环语句:
-
for循环
-
while循环
-
dowhile循环
断点调试:断点调试可以帮助我们观察程序的运行过程
F12 -- sources -- 调试文件 -- 程序的某一行设置断点
Watch:监视,通过watch可以监视变量的值的变化
F11:程序单步执行,让程序一行一行的执行,此时,观察watcj中变量的值的变化
for循环
在程序中,一组被重复执行的语句被称之为循环体,能否重复执行,取决于循环的终止条件。由循环体及循环的终止条件组成的语句,被称之为循环语句,计数
双重for循环
while循环
更复杂、灵活的条件判断
dowhile循环
更复杂、灵活的条件判断,至少会执行一次循环代码
continue与break
-
continue关键字用于立即跳出本次循环,继续下一次循环,本次循环体中continue之后的代码就会少执行一次
-
break关键字用于立即跳出整个循环,循环结束
命名规范以及语法规范
-
标识符命名规范
-
变量函数的命名必须要有意义
-
变量的名称一般用名词
-
函数的名称一般用动词
-
-
操作符语法规范
-
操作符的左右两侧各保留一个空格
-
-
单行注释语法规范
-
单行注释前保留一个空格
-
-
其他语法规范
-
括号左侧保留一个空格
-
...
-
js数组与函数
能够知道为什么要有数组
能够创建数组
能够获取数组中的元素
能够对数组进行遍历
能够给数组新增一个元素
能够独立完成冒泡排序的案例
数组的概念
数组是指一组数据的集合,其中的每个数据被称为元素,在数组中可以存放任意类型的元素,数组是一种将一组数据存储在单个变量名下的优雅方式
创建数组
js中创建数组有两种方式:
-
利用new创建数组
-
利用数组字面量创建数组
获取数组中的元素
数组的索引/下标:用来访问数组元素的序号(从零开始)
数组可以通过索引来访问、设置、修改对应的数组元素,我们可以通过数组名[索引]的方式来获取数组中的元素
遍历数组
将数组中的每个元素从头到尾都访问一次
数组长度:数组名.length,可以访问数组元素的数量,即数组长度 -- 动态检测数组的个数
数组中新增元素
-
修改length长度
-
修改索引号追加
数组案例
js函数
能够说出为什么需要函数
能够根据语法书写函数
能能够根据需求封装函数
能够说出形参和实参的传递过程
能够使用函数的返回值
能够使用arguments获取函数的参数
函数的概念
封装了一段可被重复调用执行的代码块,通过此代码块可以实现大量代码的重复使用
函数的使用
-
声明函数
-
调用函数
函数的参数
在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去
-
形参
-
实参
函数的返回值
-
return
arguments的使用
当我们不确定有多少个参数传递的时候,可以用arguments来获取,在js中,arguments实际它是当前函数的一个内置对象,所有的函数都内置了一个arguments对象,argums对象存储了传递的所有实参
伪数组
-
具有length属性
-
按索引方式存储数据
-
不具有数组的push、pop等方法
函数案例
函数的两种声明方式
js作用域
能够说出js的两种作用域
能够区分全局变量和局部变量
能够说出如何在作用域链中查找变量的值
作用域
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
块级作用域
变量的作用域
-
全局变量
-
局部变量
作用域链
js预解析
能够知道解析器运行js分为哪两步
能够说出变量提升的步骤和运行过程
能够说出函数提升的步骤和运行过程
预解析
变量预解析和函数预解析
预解析案例
js对象
能够说出为什么需要对象
能够使用字面量创建对象
能够使用构造函数创建对象
能够说出new的执行过程
能够遍历对象
对象
在js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象
对象是由属性和方法组成的
-
属性:事物的特征,在对象中用属性来表示(常用名词)
-
方法:事物的行为,在对象中用方法来表示(常用动词)
为什么需要对象?
保存一个值时,可以用变量,保存多个值(一组值)时,可以用数组,如果要保存一个人能的完整信息时,需要使用对象
js中的对象表达结构更清晰,更强大
创建对象的三种方式
-
利用字面量创建对象
-
利用new Object创建对象
-
利用构造函数创建对象
new关键字
-
在内存中创建一个空的对象
-
让this指向这个空对象
-
执行构造函数里面的代码,给空对象添加属性和方法
-
返回这个对象
