js需知知识
编程语言
编程:让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程
计算机程序:计算机(任何能执行代码的设备)所执行的一系列的指令集合,而程序全部都是用我们所掌握的语言来编写的,所以人们要控制计算机一定要通过计算机语言向计算机发出命令
计算机语言:人与计算机之间通讯的语言,它是人与计算机之间传递信息的媒介
计算机语言大概可以分为机器语言、汇编语言、高级语言三大类。
计算机最终执行的都是机器语言,它由0和1组成的二进制数,二进制是计算机语言的基础
编程语言
通过类似于人类语言的语言来控制计算机,让计算机为我们做事,这种语言就是编程语言
编程语言是用来控制计算机的一系列指令,它由固定的格式和词汇,必须遵守
如今通用的编程语言有两种形式:汇编语言和高级语言
汇编语言和机器语言实质相同,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,容易识别和记忆。
高级语言主要是相对于低级语言而言,它并不是特质某一种具体的语言,而是包括了很多编程语言,常用的有C语言,C+语言、java、C#、Python、PHP、Javascript、Objective-C、Swift等。
翻译器
高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,因此,需要翻译器
翻译器可以将我们所编写的源代码转换为机器语言,这也被称为二进制话,记住1和0.
编程语言和标记语言的区别
编程语言有很强的逻辑和行为能力,在编程语言里,你会看到很多有很多if else for while 等具有逻辑性和行为能力的指令,这是主动的。
标记语言:不用于向计算机发出指令,常用于格式化和链接,标记语言的存在是用来读取的,他是被动的
计算机的组成
计算机是由硬件和软件组成的
硬件包括输入设备(鼠标、键盘、手写板、摄像头等)输出设备(显示器、打印机、投影仪等)cpu(负责处理数据和运算)、硬盘、内存(它们两负责存出数据。硬盘永久存储数据,内存暂时存储数据)
软件分为系统软件(windows、Linux、macOS)应用软件(qq、vscode、微博)
数据存储
计算机内部使用二进制0和1来表示数据
所以数据,包括文件、图片等最终都是以二进制数据的形式存放在硬盘中的
所以程序,包括操作系统,本质都是各种数据,也以二进制数据的形式存放在硬盘中。平时我们所说的安装软件,其实就是把程序软件复制到硬盘中
数据存储单位
bit<byte<kb<GB<TB<...
位 bit 1bit可以保存一个0或者1 (最小的存储单位)
字节 Byte : 1B = 8b
千字节 KB : 1KB = 1024 B
兆字节 MB : 1MB = 1024 KB
吉字节 GB : 1GB = 1024MB
太字节 TB : 1TB = 1024GB
...
程序运行(硬盘——内存条——cpu)
打开某个程序时,先从硬盘中把程序的代码加载到内存中
cpu执行内存中的代码
注意:要内存的一个重要原因,是因为cpu运行太快了,如果只从硬盘中读数据,会浪费cpu性能,所有,才使用速度更快的内存来保存运行时的数据(内存是电,硬盘是机械)
js
js历史
BrendanEich 在1995年利用10天完成Javascript设计.
网景公司最初命名为LiveScript,后来在与Sun合作之后将其改名为Javascritp
js是什么
js是世界上最流行的语言之一,是一种运行在客户端的脚本语言
脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行
现在也可以基于node.js技术进行服务端编程
js作用
表单动态验证(密码强度检测)--js产生最初的目的
网页特效
服务端开发(Node.js)
桌面程序(Electron)
App(Cordova)
控制硬件-物联网(Ruff)
游戏开发(cocos2d-js)
html、css 标记语言 ——描述类语言
js 脚本语言——编程类语言
浏览器执行js
浏览器分为两部分,渲染引擎和js引擎
渲染引擎:用来解析html/css,俗称内核,比如chrome浏览器的blink
js引擎:也叫js解释器,用来读取网页中的js代码,对其处理后运行,比如chrome浏览器的v8
浏览器本身并不会执行代码,而是通过内置js引擎来执行js代码。js引擎执行代码时逐行解释每一句源码(转换为机器语言),然后由计算机去执行,所有js语言归为脚本语言,会逐行解释执行
js的组成
jsvascript由ECMAScript(js基本语法)、DOM(页面文档对象模型)、BOM(浏览器对象模型)组成
ECMAScript是由ECMA国际进行到的标准化的一门编程语言,这种语言在万维网上应用广泛,它往往被称为js或jscript,但实际上后两者是ECMAScript语言的实现和扩展
javaScript网景公司
jscript 微软公司
ECMAScript:ECMAScript规定了js的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套js语法工业标准。
文档对象模型dom,是w3c组织推荐的处理可扩展标记语言的标准编程接口,通过Dom提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)。
浏览器对象模型bom,提供独立于内容、可以与浏览器窗口进行互动的对象结构,通过bom可以操作浏览器窗口,比如弹出框、控制浏览器调整、获取分辨率等
js三种书写位置
js有三种书写位置,分别为行内、内嵌和外部
行内式
可以将单行js代码写在html标签的事件书写中(以on开头的属性),比如onclick
注意单双引号的使用:在html中我们推荐使用双引号,js中我们推荐使用单引号
不推荐使用——可读性差,在html中编写js大量代码时,不方便阅读,引号易错,引号多层嵌套匹配时,非常容易弄混
特殊情况下使用
内嵌
可以将多行js代码写到script标签中
内嵌js是学习时常用的方式
外部
利用html页面代码结构化,把大段js代码独立到html页面之外,既美观,也方便文件级别的复用
引用外部js文件的script标签中间不可以写代码
适合于js代码量比较大的情况
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!-- 行内式的js 直接写到元素的内部 -->
<input type="button" value="唐伯虎" onclick="alert('秋香')">
<script>
// 内嵌式的js
alert("沙漠骆驼");
</script>
<!-- 外部js -->
<script src="my.js"></script>
</body>
</html>
js注释
单行注释// ctrl+/ ctrl+?
多行注释/* */ shift+alt +a
vs中修改多行注释的快捷键 ctrl+shift+/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 单行注释
// console.log("你好");
// 多行注释
/*
console.log("吃饭");
console.log("洗澡");
console.log("沐浴");
*/
</script>
</body>
</html>
js输出输入语句
alert 浏览器弹出警示框
console.log 浏览器控制台打印输出信息
prompt 浏览器弹出输入框,用户可以输入
变量
变量就是用于存放数据的容器
变量本质是程序在内存中申请的一块用来存放数据的空间
变量的使用
1.用var 声明变量 var(variable)js关键字,声明变量后,计算机会自动分配内存空间,可以通过变量名来访问内存中分配的空间
2.赋值 把值存入到变量中
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 用var声明了一个变量age
var age;
// 赋值
age=18;
console.log(age);
</script>
</body>
</html>
变量的初始化
声明一个变量并赋值,称为变量的初始化
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 变量的初始化
var age=18;
console.log(age);
</script>
</body>
</html>
变量案列
弹出一个输入框,提示用户输入姓名。
弹出一个对话框,输出用户刚才输入的姓名。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 弹出一个输入框,提示用户输入姓名。
// 弹出一个对话框,输出用户刚才输入的姓名。
var myname = prompt("请输出你的名字");
alert(myname);
</script>
</body>
</html>
变量语法扩展
变量值重新赋值后,变量值以最后一次赋的值为准
可以同时声明多个变量
声明变量的特殊情况
只声明不赋值,为undefined
不声明直接赋值,可以使用
不声明不赋值 ,结果报错
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 重新赋值,变量值以最后一次赋的值为准
var cute="可爱";
console.log(cute);
cute="有钱";
console.log(cute);
// 同时声明多个变量
var age=18, address="策划"
console.log(age,address);
// 声明变量的特殊情况
// 只声明不赋值,为undefined
var sex;
console.log(sex);
// 不声明直接赋值使用使用
qq=127877;
console.log(qq);
// 不声明不赋值 结果报错
console.log(phone);
</script>
</body>
</html>
变量的命名规范
变量名由字母(A-Za-z)、数字(0-9)、美元符号($)组成
严格区分大小写。var app与var App是两个变量
不能以数字开头
不能使用关键字、保留字命名。eg:var for name
遵守驼峰命名法。首字母小写,后面单词的首字母大写。eg:myFirstName
变量名必须有意义
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 变量名不能以数字开头
var $a=13;
var _d=14;
var asd=15;
console.log($a,_d,asd);
// 严格区分大小写
var app=10;
var App=100;
console.log(app,App);
</script>
</body>
</html>
变量案列 交换两个变量的值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 交换两个变量的值,借用第三方变量temp
var apple1="青苹果";
var apple2="红苹果";
console.log(apple1,apple2);
var temp;
temp=apple1;
apple1=apple2;
apple2=temp;
console.log(apple1,apple2);
</script>
</body>
</html>
数据类型
为什么需要数据类型
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。
变量的数据类型
变量是用来存储值的所在处,它们有名字和数据类型。
变量的数据类型决定了如何代表这些值的位存储到计算机的内存中
javascript是一种弱类型或者说动态语言。
变量数据类型的确定
js的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var num; // 这里的num我们不确定属于哪种数据类型
var num=10; //这里的num属于数字型
// js的变量数据类型是只有程序在运行过程中,根据等号右边的值来确定的
var str= 'pink'; //str值为字符串型
</script>
</body>
</html>
js是动态类型,也就意味着相同的变量可以做不同的类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var x=6; //这里x为数字类型
x="money"; //这里x为字符串类型
</script>
</body>
</html>
简单数据类型
简单数据类型 | 说明 | 默认值 |
Number | 数字型,包含整型值和浮点型值,如21、0.21 | 0 |
Boolean | 布尔值类型,如true,false,等价于1和0 | false |
String | 字符串类型,字符串都要带引号 | " " |
Undefined | var a;声明了变量a,但没有给值,那a的值就是undefined | undefined |
Null | var a=null; 变量a为空值 |
null |
数字型 Number
js数字类型可以用来保存整数值,也可以保存小数(浮点数)。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var num=10; //num数字型
</script>
</body>
</html>
数字型进制
最常见的进制有二进制、八进制、十进制、十六进制。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 1.八进制 0~7 程序里数字前面加0 表示八进制
var num1=010;
console.log(num1);//八进制转换为十进制结果为8
var num2=012;
console.log(num2);//10
// 2.十六进制 0~9 a~f 程序里数字前面加0x,表示十六进
var num3=0x9;
console.log(num3);//9
var num4=0xa;
console.log(num4);//10
</script>
</body>
</html>
数字型
js中的最大值和最小值
Number.MAX_VALUE //1.7976931348623157e+308
Number.MIN_VALUE //5e-324
数字型三个特殊值
Infinity //代表无穷大,大于任何数值
-infinity //代表无穷小,小于任何数值
NaN //not a number,代表一个非数值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 无穷大
console.log(Number.MAX_VALUE * 2);//infinity
// 无穷小
console.log(-Number.MAX_VALUE*2)//-infinity
// 非数字
console.log('pink老师'-100);//NaN
</script>
</body>
</html>
isNaN
用来判断一个变量是否为非数字的类型,返回true或者false
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// isNaN() 用来判断非数字,会返回一个值
// 是数字返回false,不是数字返回true
console.log(isNaN(12));//false
console.log(isNaN("我会发大财"));//true
</script>
</body>
</html>
字符串型 string
字符串可以是引号中的任意文本,其语法为“双引号”或'单引号'
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 字符串型
var cute="小兰花说可恶心啦";
var money="我发大财啦";
</script>
</body>
</html>
字符串引号嵌套
字符串引号嵌套,只能用单引号嵌套双引号,或者双引号嵌套单引号
引号嵌套不能符号相同,它是就近原则,单引号嵌套单引号,双引号嵌套双引号,会报错
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 字符串型
var handsome="'东方青苍'三界第一";
var marry='"东方青苍"和"小兰花"要举行婚礼啦';
console.log(handsome);
console.log(marry);
</script>
</body>
</html>
字符串转义符
字符串中有一些特殊字符,称为转义符
转义符都是以\开头的
转义符 | 解释说明 |
\n | 换行符,n是newline的意思 |
\\ | 斜杠\ |
\' | '单引号 |
\" | "双引号 |
\t | tab缩进 |
\b |