起源
JavaScript主要用于处理网页中的前端验证,也就是检查用户输入的内容是否符合一定的规则,比如用户名长度、密码长度、邮箱格式等。
ECMAScript是JavaScript标准,这个标准需要各个厂商去实现。不同的浏览器厂商对该标准会有不同的实现。
一个完整的JavaScript标准包括三部分:ECMAScript(标准)、DOM(文档对象模型)、BOM(浏览器对象模型)。
JS的特点
- 解释型语言
- 类似 C 和 JAVA 的语法结构
- 动态语言
- 基于原型的面向对象
初次使用
弹出一个警告框:alert("this is my first js code");
在页面中 (body里) 输出一个内容:document.write(''喵喵喵");
向控制台输出一个内容:console.log("啾咪");
JS的编写位置
- 标签的
onclick
属性中 - 超链接的
href
属性中 script
标签中<script> </script>
- 外部.js文件中,然后通过 script 标签引入
<script type="text/javascript" src="./learn.js"></script>
。一旦引入了外部文件,就不能在标签内部编写代码了,写了也会被忽略。
基本语法
多行注释:/* */
;
单行注释://
;
js中严格区分大小写;
每条语句以分号结尾;
字面量和变量
字面量:不可改变的值,都是可以直接使用的值,如1,2,3;一般不会直接使用;
变量:可以改变的值,用来保存字面量,更加方便使用。
\qquad \;
声明变量:var x;
\qquad \;
变量赋值:x = 20;
数据类型指的是字面量的类型。在JS中一共有6种数据类型:String字符串、Number数值、Boolean布尔值、Null空值、Undefined未定义、Object对象,前五种属于基本数据类型,最后一种属于引用数据类型。
标识符
在JS中,所有可以由我们自主命名的都可以称为标识符。规则如下:
- 标识符中可以含有字母、数字、_、$;
- 标识符不能以数字开头;
- 标识符不能是ES中的关键字或保留字;
- 采用驼峰命名法:首字母小写;每个单词的开头字母大写,其他字母小写;
- (JS底层保存标识符时采用的是Unicode编码,所以理论上所有的utf-8中含有的内容都可以作为标识符)
基本数据类型
- 字符串
举例:var str="Hello";
,""
和‘’
都可以。 - Number
JS中所有的数值都是Number类型,包括整数和浮点数。
可以用console.log(typeof a);
输出a的数据类型。
JS中数字的最大值:Number.MAX_VALUE
,如果使用Number表示的数字超过了最大值,则会返回一个Infinity
,表示正无穷,或者-Infinity
,表示负无穷;
JS中数字的最小值:Number.MIN_VALUE
,大于0的最小正数;
特殊数字NaN
,表示 Not a Number。
typeof Infinity
和typeof NaN
都是Number
。
JS中整数的运算基本可以保证精确,浮点数运算不一定精确。 ⟶ \longrightarrow ⟶ 别进行浮点数运算了。 - 布尔值
true
逻辑真
false
逻辑假
typeof 一个布尔值
返回Boolean
- Null 和Undefined
Null型的值只有一个:null
;
var a = null;
专门用来表示一个为空的对象,typeof a
返回object
。
Undefined型的值也只有一个:undefined
;
声明一个变量但未赋值时,这个变量的值就是undefined,typeof 一个undefined值
返回undefined
。 - 强制类型转换
转换为String
调用被转换数据类型的toString()方法:var a = 123; var b = a.toString();
此时b = "123"
;注意:null
和undefined
没有toString()方法;
调用String()函数:var a = 123; var b = String(a);
此时b = "123"
;注意:此时可以转换null
和undefined
为"null"
和"undefined"
;
转换为Number
调用Number()函数:var a = "123"; var b = Number(a);
此时b = 123
;
字符串转数值时:
\qquad 如果是纯数字的字符串,则直接转换为数字;
\qquad 如果字符串中有非数字的内容,则转换为NaN
;
\qquad 如果字符串为空或者全是空格,则转换为0;
\qquad 如果是布尔值,那么转换为1或0;
\qquad 如果是null,则转换为0;
\qquad 如果是undefined,则转换为NaN
;
专门转换字符串:parseInt()
提取字符串中有效的整数内容进行转换;parseFloat()
提取字符串中有效的浮点数内容进行转换;对非String使用时,先将其转换为String再操作。
转换为Boolean
调用Boolean()函数:var a = "123"; var b = Boolean(a);
此时b = true
;
数字转布尔值时,除了0和NaN,都会转为true
;
字符串转布尔值时,除了空字符串,都会转为true
;
null
、undefined
和object型数据
都转为false
。 - 其他进制的数字
十六进制:0x开头;
八进制:0开头;
二进制:0b开头,但不是所有的浏览器都支持;
注:parseInt(a, 10);
将a以十进制转换为数字。
运算符
- 算术运算符
+ - * / %
,对非Number值进行运算时,会先将它们转换为Number型再运算;注意以下两个特例(只有这两个):
字符串进行加法时除外,它们会拼接;
任何值和字符串做加法,都会将它转换为字符串再拼接; - 一元运算符
+ -
,正号、负号,对非Number值进行运算时,会先将它们转换为Number型再运算;
++ --
,自增、自减 - 逻辑运算符
! && ||
,“与”和“或”都是短路运算符; - 关系运算符
> < ==
,非数值进行比较时,先转换成数值再比较;任何值和NaN
做任何比较都是false;两个字符串比较时,比较Unicode编码; - 条件运算符(三元运算符)
条件表达式 ? 语句1 : 语句2