JavaScript
一、开端
1.计算机组成:硬件和软件,硬件很多种,软件分为系统软件和应用软件
2.数据储存:计算机内的所有的数据(图片、视频也是)最终都是以二进制的形式存储在硬盘中的
3.数据存贮单位
| 单位 | 大小 |
|---|---|
| 位(bit) | |
| 字节(Byte) | 1B=8bit |
| 千字节(KB) | 1024B |
| 兆字节(MB) | 1024KB |
| 吉字节(GB) | 1024MB |
| 太字节 (TB) | 1024GB |
4.js是什么
- js是一种运行在客户端的脚本语言
- 脚本语言:不需要编译,运行过程中由js解释器(js引擎)逐行来进行解释并执行
- 现在也可以基于node.js技术进行服务器端编程
5.js三种书写位置
行内式, 特殊情况下再用
内嵌式
引进外部js文件
6.js的特点
解释型语言
JavaScript是一门解释型语言,所谓解释型值语言是指不需要被编译为机器码在执行,而是直接执行。由于少了编译这一步骤,所以解释型语言开发起来尤为轻松,但是解释型语言运行较慢也是它的劣势。不过解释型语言中使用了JIT技术,使得运行速度得以改善。
动态语言
JavaScript是一门动态语言,所谓的动态语言可以暂时理解为在语言中的一切内容都是不确定的。比如一个变量,这一时刻是个整型,下一时刻可能会变成字符串了。当然这个问题我们以后再谈。不过在补充一句动态语言相比静态语言性能上要差一些,不过由于JavaScript中应用的JIT技术,所以JavaScript可能是运行速度最快的动态语言了。
类似于 C 和 Java 的语法结构
JavaScript的语法结构与C和Java很像,向for、if、while等语句和Java的基本上是一模一样的。所以有过C和Java基础的同学学习起来会轻松很多。不过JavaScript和与Java的关系也仅仅是看起来像而已。
基于原型的面向对象
JavaScript是一门面向对象的语言。啥是对象?下次聊。
Java也是一门面向对象的语言,但是与Java不同JavaScript是基于原型的面向对象。啥是原型?下次聊。
严格区分大小写
JavaScript是严格区分大小写的,也就是abc和Abc会被解析器认为是两个不同的东西。
1. JS的输出
- 页面输出 document.write('Hello,Worle!'); 将内容直接写道HTML文档中,也就是说是可以加标签的
- 控制台输出
<script>
console.log("输出一条日志");//最常用 //白色
console.info("输出一条信息"); //白色
console.warn("输出一条警告"); //黄色
console.error("输出一条错误"); //红色
</script>
- 弹出窗口输出 alert("")
二、JS的基本语法
1.标识符
所谓标识符,就是指给变量、函数、属性或函数的参数起名字。
标识符可以是按照下列格式规则组合起来的一或多个字符:
-
第一个字符必须是一个字母、下划线( _ )或一个美元符号( $ )。
-
其它字符可以是字母、下划线、美元符号或数字。
-
按照惯例,ECMAScript 标识符采用驼峰命名法。
- 驼峰命名法:首个单词的首字母小写,其他的单词的首字母大写
-
标识符不能是关键字和保留字符。
2.变量
变量分为字面量和变量
字面量是一些固定的值,变量用var去声明
2.1 类型分类
JavaScript中一共有5种基本数据类型:
- 字符串型(String)
- 数值型(Number)
- 布尔型(Boolean)
- undefined型(Undefined)
- null型(Null)
这5种之外的类型都称为Object(比如NULL),所以总的来看JavaScript中共有六种数据类型。
2.2 typeof运算符
使用typeof操作符可以用来检查一个变量的数据类型。
用法:
<script>
console.log(typeof 123);
console.log(typeof "Hello,World!");
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof null);
</script>
2.3 String
String用于表示一个字符序列,即字符串。字符串需要使用 单引号 或 双引号 括起来。
转义字符:
2.4 Number
-
Number 类型用来表示整数和浮点数,最常用的功能就是用来表示10进制的整数和浮点数。
-
Number表示的数字大小是有限的,如果超过了这个范围,则会返回 ±Infinity(对,就是返回这个单词)。
- 最大值:+1.7976931348623157e+308
- 最小值:-1.7976931348623157e+308
- 0以上的最小值:5e-324
-
特殊的数字:
- Infinity:正无穷
- -Infinity:负无穷
- NaN:非法数字(Not A Number)
-
其它的进制:
- 二进制:0b 开头表示二进制,但是,并不是所有的浏览器都支持
- 八进制:0 开头表示八进制
- 十六进制:0x 开头表示十六进制
2.5 Boolean
- 布尔型也被称为逻辑值类型或者真假值类型。
- 布尔型只能够取真(true)和假(false)两种数值。除此以外, 其它的值都不被支持。
2.6 Undefined
- Undefined 类型只有一个值,即特殊的 undefined。
- 在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined。
- undefined 和 is not defined不一样,undefined已经分配了内存了,只是没有初始化,而is not defined是完全没有声明变量而导致的控制台报错。
2.7 Null
- Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null。
- undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true。
3.强制类型转换
3.1 转换为String类型
将其它数值转换为字符串有三种方式:toString()、String()、 拼串。
-
方式一:调用被转换数据类型的toString()方法,该方法不会影响到原变量,它会将转换的结果返回,但是注意:null和undefined这两个值没有toString()方法,如果调用它们的方法,会报错。
var a = 123; a = a.toString(); console.log(a); console.log(typeof a); -
方式二:调用String()函数,并将被转换的数据作为参数传递给函数,使用String()函数做强制类型转换时,对于Number和Boolean实际上就是调用的toString()方法,但是对于null和undefined,就不会调用toString()方法,它会将 null 直接转换为 “null”,将 undefined 直接转换为 “undefined”。
var a = 123; a = String(a); console.log(a); console.log(typeof a); var b = undefined; b = String(b); console.log(b); console.log(typeof b); var c = null; c = String(c); console.log(c); console.log(typeof c); -
为任意的数据类型
+ ""var a = 123; a = a + ""; console.log(a); console.log(typeof a);
3.2 转换为Number类型
有三个函数可以把非数值转换为数值:Number()、parseInt() 和parseFloat()。Number()可以用来转换任意类型的数据,而后两者只能用于转换字符串。parseInt()只会将字符串转换为整数,而parseFloat()可以将字符串转换为浮点数。
说实话直接用Number() 就行
3.3 转换为Boolean类型
将其它的数据类型转换为Boolean,只能使用Boolean()函数。
-
使用Boolean()函数
-
数字 —> 布尔
- 除了0和NaN,其余的都是true
-
字符串 —> 布尔
- 除了空串,其余的都是true
-
null和undefined都会转换为false
-
对象也会转换为true
-
4.运算符
运算符有算数运算符、关系运算符、赋值运算符、逻辑运算符、比较运算符、条件运算符、逗号运算符。
大部分与C语言相同。
不同的:
比较运算符:
使用 == 来做相等运算 当使用==来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后在比较 使用 != 来做不相等运算 不相等用来判断两个值是否不相等,如果不相等返回true,否则返回false,不相等也会对变量进行自动的类型转换,如果转换后相等它也会返回false 使用 === 来做全等运算 用来判断两个值是否全等,它和相等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回false 使用 !== 来做不全等运算 用来判断两个值是否不全等,它和不等类似,不同的是它不会做自动的类型转换,如果两个值的类型不同,直接返回true
条件运算符
JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。
语法:variablename=(condition)?value1:value2;
举例:result=(age<18)?"年龄太小":"年龄合适";
执行流程:如果condition为true,则执行语句1,并返回执行结果,如果为false,则执行语句2,并返回执行结果。
逗号运算符
使用逗号可以在一条语句中执行多次操作。
比如:var num1=1, num2=2, num3=3;
使用逗号运算符分隔的语句会从左到右顺 序依次执行。
运算符优先级
运算符优先级由上到下依次减小,对于同级运算符,采用从左向右依次执行的方法。
5.对象基础
5.1 概述
Object类型,我们也称为一个对象,是JavaScript中的引用数据类型。它是一种复合值,它将很多值聚合到一起,可以通过名字访问这些值。对象也可以看做是属性的无序集合,每个属性都是一个名/值对。对象除了可以创建自有属性,还可以通过从一个名为原型的对象那里继承属性。除了字符串、数字、true、false、null和undefined之外,JavaScript中的值都是对象。
5.2 创建
创建对象有两种方式
var person = new Object();
person.name = "孙悟空";
person.age = 18;
console.log(person);
和
var person = {
name: "孙悟空",
age: 18
};
console.log(person);
5.3访问
对象.属性名 和 对象[‘属性名’]
5.4 删除属性
delete 对象.属性名
5.5 遍历对象
枚举遍历对象中的属性,可以使用for … in语句循环,对象中有几个属性,循环体就会执行几次。
for (var 变量 in 对象) {
}
5.6数据类型梳理
基本数据类型
JavaScript中的变量可能包含两种不同数据类型的值:基本数据类型和引用数据类型。
JavaScript中一共有5种基本数据类型:String、Number、 Boolean、Undefined、Null。
基本数据类型的值是无法修改的,是不可变的。
基本数据类型的比较是值的比较,也就是只要两个变量的值相等,我们就认为这两个变量相等。
引用数据类型
当一个变量是一个对象时,实际上变量中保存的并不是对象本身,而是对象的引用。
当从一个变量向另一个变量复制引用类型的值时,会将对象的引用复制到变量中,并不是创建一个新的对象。
这时,两个变量指向的是同一个对象。因此,改变其中一个变量会影响另一个。
more:JavaScript在运行时数据是保存到栈内存和堆内存当中的。
简单来说栈内存用来保存变量和基本类型,堆内存是用来保存对象。
6.函数
6.1 概述
函数是由一连串的子程序(语句的集合)所组成的,可以被外部程序调用,向函数传递参数之后,函数可以返回一定的值。