能够说出什么是编程语言
能够区分编程语言和标记语言的不同
能够说出常见的数据存储单位及其换算关系
能够说出内存的主要作用以及特点
关键词:编程语言 计算机基础
编程
编程:计算机为了解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程
计算机程序:计算机所执行的一系列指令集合,而程序全部都是我们所掌握的语言来编写的,所以,人们要控制计算机一定要通过计算机语言向计算机发出命令
注意:计算机指的是任何能够执行代码的设备
计算机语言
计算机语言指用于人与计算机之间通讯的语言,它是人与计算机之间传递信息的媒介
计算机语言的种类非常多,总的来说可以分成机器语言、汇编语言、高级语言三大类
实际上计算机最终执行的都是机器语言,它是由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历史
布兰登艾奇(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 -- 文档对象模型
6.3 BOM -- 浏览器对象模型
js初体验
alert('如果我是dj,你还爱我吗')
单行注释、多行注释
方法
说明
归属
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
数字型进制
最常见的进制有二进制、八进制、十进制、十六进制
在js中八进制前面加0,十六进制前面加0x
数字型范围
js中数字型的最大值和最小值
数字型三个特殊值
无穷大、无穷小、非数值
字符串可以是引号中的任意文本,其语法为双引号""和单引号'',因为HTML标签内的属性使用的是双引号,js这里我们更推荐使用单引号
字符串引号嵌套
js可以用双引号嵌套单引号,或者用单引号嵌套双引号(外双内单,外单内双)
字符串转义字符
转义符
解释说明
\n
换行符
\
斜杠\
'
''单引号
"
""双引号
\t
tab缩进
\b
空格
字符串长度以及拼接
通过字符串的length属性可以获取整个字符串的长度
字符串 + 任何类型 = 新的字符串 数值相加,字符相连
字符串拼接加强,通过和字符串相连的方式实现变量与字符串相连,引引加加
布尔型有两个值:true和false,其中true/1表示真对,而false/0表示假错
一个声明后没有赋值的变量会有一个默认undefined,如果进行相连或者相加时,注意结果
一个声明变量给null值,里面存的值为空(学习对象时,会深入了解null)
字面量是源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值
数字字面量: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中,递增++和递减--既可以放在变量前面,也可以放在变量后面。放在前面时,我们可以称为前置递增/递减运算符,
放在变量后面时,我们可以成称为后置递增/递减运算符
注意:递增和递减必须和变量配合使用
前置递增运算符
后置自增运算符
练习
比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较运算的结果
运算符名称
说明
案例
结果
>
大于号
<
小于号
>=
大于等于号
<=
小于等于号
==
判等号(会转型)
!=
不等号
=== !==
全等要求值和数据类型都一致
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。开发多用于多个条件的判断
逻辑运算符
说明
案例
&&
逻辑与 and
||
逻辑或 or
!
逻辑非 not
短路运算(逻辑中断)
短路运算原理:当有多个表达式(值)时,左边的表达式/值可以确定结果时,就不再继续运算右边的表达式
用来把数据赋值给变量的运算符
赋值运算符
说明
案例
=
直接赋值
+=、-=
加、减一个数后再赋值
*=、/=、%=
乘、除、取模后再赋值
优先级
运算符
顺序
1
小括号
()
2
一元运算符
++、--、!
3
算数运算符
先*、/、% 后 + -
4
比较运算符
>、>=、<、<=、
5
相等运算符
==、!=、===、!==
6
逻辑运算符
先&&后||
7
赋值运算符
=
8
逗号运算符
,
能够使用if分支语句
能够使用switch语句
能够使用三元表达式
在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能
即:流程控制就是来控制我们的代码按照什么结构顺序来执行
流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构,这三种结构代表三种代码执行顺序
顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果
switch语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用switch
一般情况下,它们两个语句可以相互替换
switch…case语句通常处理case为比较确定之的情况,而if…else…语句更加灵活,常用于判断范围(大于、等于某个范围)
switch语句进行条件判断后直接执行到程序的条件语句,效率更高。而if…else语句有几种条件,就得判断多少次
当分支比较少时,if…else语句的执行效率比switch语句高
当分支比较少时,switch语句的执行效率比较高,而且机构更清晰
能够说出循环的目的
能够说出for循环的执行过程
能够使用断点调试来观察的代码的执行过程
能够使用for循环完成累加求和等案例
能够使用双重for循环完成乘法表案例
能够说出while循环和dowhile循环的区别
能够说出break和continue的区别
循环的目的:在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句
在js中,主要有三种类型的循环语句:
for循环
while循环
dowhile循环
断点调试:断点调试可以帮助我们观察程序的运行过程
F12 -- sources -- 调试文件 -- 程序的某一行设置断点
Watch:监视,通过watch可以监视变量的值的变化
F11:程序单步执行,让程序一行一行的执行,此时,观察watcj中变量的值的变化
在程序中,一组被重复执行的语句被称之为循环体,能否重复执行,取决于循环的终止条件。由循环体及循环的终止条件组成的语句,被称之为循环语句,计数
更复杂、灵活的条件判断
更复杂、灵活的条件判断,至少会执行一次循环代码
标识符命名规范
变量函数的命名必须要有意义
变量的名称一般用名词
函数的名称一般用动词
操作符语法规范
单行注释语法规范
其他语法规范
括号左侧保留一个空格
…
能够知道为什么要有数组
能够创建数组
能够获取数组中的元素
能够对数组进行遍历
能够给数组新增一个元素
能够独立完成冒泡排序的案例
数组是指一组数据的集合,其中的每个数据被称为元素,在数组中可以存放任意类型的元素,数组是一种将一组数据存储在单个变量名下的优雅方式
js中创建数组有两种方式:
利用new创建数组
利用数组字面量创建数组
数组的索引/下标:用来访问数组元素的序号(从零开始)
数组可以通过索引来访问、设置、修改对应的数组元素,我们可以通过数组名[索引]的方式来获取数组中的元素
将数组中的每个元素从头到尾都访问一次
数组长度:数组名.length,可以访问数组元素的数量,即数组长度 -- 动态检测数组的个数
修改length长度
修改索引号追加
js函数
能够说出为什么需要函数
能够根据语法书写函数
能能够根据需求封装函数
能够说出形参和实参的传递过程
能够使用函数的返回值
能够使用arguments获取函数的参数
封装了一段可被重复调用执行的代码块,通过此代码块可以实现大量代码的重复使用
声明函数
调用函数
在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去
形参
实参
当我们不确定有多少个参数传递的时候,可以用arguments来获取,在js中,arguments实际它是当前函数的一个内置对象,所有的函数都内置了一个arguments对象,argums对象存储了传递的所有实参
伪数组
具有length属性
按索引方式存储数据
不具有数组的push、pop等方法
能够说出js的两种作用域
能够区分全局变量和局部变量
能够说出如何在作用域链中查找变量的值
通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。
块级作用域
全局变量
局部变量
能够知道解析器运行js分为哪两步
能够说出变量提升的步骤和运行过程
能够说出函数提升的步骤和运行过程
能够说出为什么需要对象
能够使用字面量创建对象
能够使用构造函数创建对象
能够说出new的执行过程
能够遍历对象
在js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象
对象是由属性和方法组成的
属性:事物的特征,在对象中用属性来表示(常用名词)
方法:事物的行为,在对象中用方法来表示(常用动词)
为什么需要对象?
保存一个值时,可以用变量,保存多个值(一组值)时,可以用数组,如果要保存一个人能的完整信息时,需要使用对象
js中的对象表达结构更清晰,更强大
利用字面量创建对象
利用new Object创建对象
利用构造函数创建对象
在内存中创建一个空的对象
让this指向这个空对象
执行构造函数里面的代码,给空对象添加属性和方法
返回这个对象
for…in语句用于对数组或者对象的属性进行循环操作
能够说出什么是内置对象
能够根据文档查询指定API的使用方法
能够使用Math对象的常用方法
能够使用Date对象的常用方法
能够使用Array对象的常用方法
能够使用String对象的常用方法
js中的对象分为三种:自定义对象、内置对象、浏览器对象
前两者是js基础内容,属于ECMAScript,第三个浏览器对象属于js独有的,属于js API模块
内置对象就是指js语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法),内置对象最大的优点就是帮助我们快速开发
JavaScript 参考 - JavaScript | MDN (mozilla.org)
查阅该方法的功能
查看里面参数的意义和类型
查看返回值的意义和类型
测试
为了方便操作基本数据类型,js还提供了三个特殊的引用类型:String、Number、Boolean
基本包装类型就是把简单数据类型包装成复杂数据类型,这样基本数据类型就有了属性和方法
指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间
字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串
能够说出简单数据类型的内存分配
能够说出复杂数据类型的内存分配
能够说出简单类型如何传参
能够说出复杂类型如何传参
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
string、number、boolean、undefined、null
引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型
通过new关键字创建的对象(系统对象、自定义对象)
堆:由操作系统自动分配释放存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈,简单数据类型存放到栈里面
堆:存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收,复杂数据类型存放到堆里面
js中没有堆栈的概念,通过堆栈的方式更容易理解代码的执行方式
简单数据类型:值存放在栈里开辟的内存空间
复杂数据类型:地址存放在栈里开辟的内存空间,地址指向的在堆里开辟的内存空间,堆里的内存空间用于存放值
变量初始化
在栈开辟内存空间,存放值
变量重新赋值
将内存空间对用变量的值修改为新值
函数的形参也可以看做是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里的值赋值了一份给形参,那么方法内部堆形参做任何修改,都不会影响到外部的变量
变量初始化
在栈开辟内存内存空间,存放对象
在栈开辟内存空间,存放地址值,指向栈内存里存放对象的内存空间
函数的形参也可以看作是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象
手机扫一扫
移动阅读更方便
你可能感兴趣的文章