一.JavaScript简介

1.一个完整的JavaScript实现应由以下三部分组成:

(1)ECMAScript:是JavaScript的一个标准
(2)DOM:文档对象模型,给我们提供一组对象来操作网页
(3)BOM:浏览器对象模型,给我们提供一组对象来操作浏览器

2.JS特点:

(1)解释型语言,动态语言
(2)跨平台
(3)基于原型的面向对象
(4)类似于C和Java的语法结构
(5)事件驱动:可以直接对用户操作做出响应,无需经过服务器

3.JS编写位置:推荐方法(4)

(1)JS代码head中的写在script标签内
(2)可以写在按钮标签button的onclick属性中

  • 写入属性中结构与行为会有耦合性,不推荐

(3)还可以写在连接标签a的href里,点击链接执行代码

  • 点我
  • 写入属性中结构与行为会有耦合性,不推荐

(4)还可以写到.js文件,然后用script标签通过src属性引入

  • 引入了js文件的script标签内不能再写内容,写了也会被浏览器忽略,若需要则再写一个script标签
  • 写入js文件可以多个文件同时引用,也利用到了浏览器的缓存机制

    4.执行顺序:Js代码严格遵守从上到下的顺序一行一行执行

    5.注释:

    (1)单行注释://
    (2)多行注释:/**/

    6.JS中严格区分大小写

    7.JS的每条语句最好以分号结尾

    (1)不加的话浏览器会自动添加,但是会消耗系统资源
    (2)而且浏览器自动添加可能出错

    8.JS中忽略多个空格和换行:方便设置格式

    9.查看变量的数据类型:typeof (变量名)

    (1)示例:console.log(typeof(a));

    10.不同进制的写法:

    (1)十六进制以0x开头
    (2)八进制以0开头
    (3)二进制以0b开头

    二.基础语法

    1.弹出警告框:alert(‘内容’);

    (1)示例:alert(‘这是一个警告框’);
    image.png

    2.在页面输出内容:document.write(‘内容’);

    (1)写出的内容会出现在body中
    (2)示例:document.write(‘Hello World!!’);
    image.png

    3.向控制台输出一个内容:console.log(‘内容’);

    (1)注意是在控制台输出,而不是页面
    (2)示例:console.log(‘我向控制台发消息’);
    image.png

    4.带文本框的提示框:prompt(“要显示的内容”);

    (1)弹出提示框,该提示框带有一个输入框
    (2)该函数需要一个字符串作为参数,该参数会作为提示框的文字
    (3)将其赋值给一个变量,用来接收输入的值
    image.png

    三.字面量与变量

    1.字面量:不可改变的值(相当于常量)

    2.变量:可以任意改变的值,也可以用来存储字面量

    (1)变量的声明:使用var来声明一个变量

  • var a;//声明一个变量a

(2)用=来给变量赋值,可以与声明一起进行

  • var a = 123;//声明变量a且赋值为123

(3)变量声明一次即可,不要重复声明

四.标识符

1.在JS中可以自主命名的都可以成为标识符

(1)例如:变量名,函数名,属性名等
(2)JS底层保存标识符时,采用的是Unicode编码

  • 理论上讲中文也可以做标识符,但是尽量不用

    2.标识符命名规则

    (1)由字母,数字,下划线,美元符号构成
    (2)不能以数字开头
    (3)不能是关键字或保留字
    (4)一般首字母小写,多个单词除了第一个单词小写,之后每个单词首字母大写

    3.关键字和保留字

    image.png
    image.png

    五.数据类型

    1.字符串(String)-基本数据类型

    (1)字符串需要用引号引起来,不区分单引号和双引号
    (2)嵌套的话内外要用不同的引号,或用转义字符(\)
    (3)使用typeof检查数据类型会返回string

    2.数值(Number)-基本数据类型

    (1)JS中整数和浮点数都是Number类型(所有数值都是Number类型)
    (2)字面量:Number.MAX_VALUE是Number类型的最大值,超出这个值都会输出Infinity

  • Infinity:表示正无穷

  • -Infinity:表示负无穷
  • 同理Number.MIN_VALUE是Number类型大于0范围内的最小值

(3)NaN是一个特殊的数字,表示Not A Number
(4)浮点数的运算可能会得到一个不精确的结果
(5)使用typeof检查数据类型会返回number

3.布尔类型(Boolean)-基本数据类型

(1)布尔类型的值只有两个:true和false
(2)主要用来逻辑判断
(3)使用typeof检查数据类型会返回boolean

4.空类型(Null)-基本数据类型

(1)空类型的值只有一个:null
(2)专门用来表示一个空的对象
(3)使用typeof检查数据类型会返回object

5.未定义类型(Undefined)-基本数据类型

(1)未定义类型的值只有一个:undefined
(2)当声明变量不给赋值时,它的值就是undefined
(3)使用typeof检查数据类型会返回undefined

6.对象类型(Object)-引用数据类型

六.强制类型转换:

1.将一个数据类型强制转换为另一个数据类型

2.类型转换主要指将其他类型转换为String,Number,Boolean

3.将其他类型强制转换为String

(1)方法1:调用被转换数据类型的toString()方法:被转换数据.toString()

  • 注意,toString方法不会影响原变量,需要赋值给新变量
  • null和undefined无toString()方法
  • 示例:想把数值a转换为字符串:var b = a.toString();

(2)方法2:调用String()函数,并将要转换的填入括号当作参数

  • 注意,String()函数不会影响原变量,需要赋值给新变量
  • 所有类型都可以转换
  • 示例:想把数值a转换为字符串:var b = String(a);

    4.将其他类型强制转换为Number

    (1)方法1:调用Number()函数,并将要转换的填入括号当作参数

  • 注意,Number()函数不会影响原变量,需要赋值给新变量

  • 要转换的变量中有非数字内容或是undefined会返回NaN
  • 要转换的变量是空值或空格内容会返回0
  • true转为数字是1,false转为数字是0
  • 示例:想把字符串a转换为数字:var b = Number(a);

(2)方法2:专门对付字符串(非字符串使用会先自动转换为字符串在使用),可以填入第二个参数,表示多少进制,第二个参数填入16就是十六进制

  • parseInt():可以将字符串中的有效整数取出来并转为Number类型
    • a = “ab123c”
    • var b = parseInt(a);//b就是123
  • parseFloat():可以将字符串中的有效浮点数取出来并转为Number类型

    • a = “ab123.456”
    • var b = parseFloat(a);//b就是123.456

      5.将其他类型强制转换为Boolean

      (1)将其他数据类型转换为Boolean类型:使用Boolean()函数
  • 只有0和NaN,空字符串,null,undefined转换结果是false

  • 其余都是true

    6.检查数据类型:instanceof

    (1)用于检查数据是否属于那种类型,返回true或false
    (2)arr instanceof Array//判断arr是否为数组

    七.运算符(操作符)

    1.算术运算符:

    | 运算符 | 用法 | | —- | —- | | + | 将+左右的值做加法运算 | | - | 将-左右的值做减法运算 | | | 将左右的值做乘法运算 | | / | 将/左右的值做除法运算 | | % | 取余操作 |

(1)当非Number类型的值进行运算,都要转换成Number型在计算
(2)任何值与NaN运算都得NaN
(3)对两个字符串进行”+”操作,会拼接字符串
(4)任何跟字符串做+,都会转成字符串,做字符串拼接操作(只有+成立,其他运算会将字符串转为数值)

  • 给任意值加一个空字符串,就可以把这个值转为字符串类型,为隐式转换

(6)优先级高的先运算,优先级相同从左到右依次运算
(7)任何值做- * / 都会自动转为Number型

  • 可以通过为一个值-0,*1,/1来转换为Number型,为隐式转换

    2.一元运算符:只需要一个操作数:

    | 运算符 | 含义 | | —- | —- | | + | 正号 | | - | 负号 |

(1)当非Number类型的值进行运算,都要转换成Number型在计算

  • 可以给一个值加上正号使其转成Number型

    3.自增自减运算符:

    | 运算符 | 含义 | | —- | —- | | ++ | 使a自增1 | | — | 使a自减1 |

(1)++a表示使用前自增;a++表示使用后自增
(2)—a表示使用前自减;a—表示使用后自减

4.逻辑运算符

运算符 含义
&&
||

(1)运算规则:

  • &&:真真->真
  • ||:假假->假
  • !:一真一假

(2)!对非布尔值运算,会将其转换为布尔值,所以可以连续两次非运算,来将其转换为布尔型
(3)&&:两值都为true,返回后边的;如果两个值有false,返回前面的false
(4)||:若第一值为true,直接返回第一个值;第一个值为false,直接返回第二个数

5.赋值运算符

运算符 含义
= 将右边的值赋值给左边
+= a+=5等价于a=a+5
-= a-=5等价于a=a-5
*= a=5等价于a=a5
/= a/=5等价于a=a/5
%= a%=5等价于a=a%5

6.关系运算符

运算符 含义
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
=== 全等
!== 不全等

(1)成立返回true,不成立返回false
(2)比较非数值,会转换为数值在比较
(3)任何值与NaN比较都返回false
(4)若两侧都是字符,则会比较Unicode编码,一个字母一个字母比较,相等才比较下一位
(5)比较中文没意义
(6)相比较两个字符串就要转型才会得到想要的结果
(7)==运算类型不同则会转换为一样的在比较
(8)NaN不和任何值相等,包括它本身;若想判断一个值是否为NaN,用函数isNaN()
(9)===比较类型不同的直接返回false,!==该情况返回true

7.条件运算符(三元运算符)

(1)语法条件表达式?语句1:语句2;//先求值表达式,结果true执行语句1,并返回结果,否则执行语句2并返回结果
(2)条件表达式的结果不是布尔值,会转为布尔值在计算

8.逗号运算符”,”

(1)用法:

  • 同时定义多个变量:var a,b,c
  • 声明且赋值多个变量:var a=10,b=20,c=30;

    9.优先级表:降序

    image.png