JavaScript的认识
1.概念:一门客户脚本语言
*运行在客户浏览器中的。每一个浏览器都有JavaScript的解析引擎
*脚本语言:不需要编译,直接可以被浏览器解析执行。
2.功能:
*可以用来增强用户和html的交互过程,可以控制HTML元素,让页面有一些动态效果,增强用户的体验
ECMAScript语法与对象
基本语法
1.与html的结合方式
*内部JS:
定义<script>,标签体内容就是JS代码
*外部JS
定义<script>,通过scr属性引入外部JS文件
*注意:
1.<script>可以定义在html页面的任何地方。但定义的位置会影响执行的顺序。
2.<script>标签可以定义多个
2.注释
*单行注释://注释内容
*多行注释:/*注释内容*/ /*
3.数据类型
*原始数据类型(基本数据类型)
1.number:数字。 整数/小数/NaN(not a number 一个不是数字的数字类型)
2.string: 字符串。 字符/字符串 'abc' "abc" 单引双引都行
3.Boolean: true或false
4.null:一个对象为空的占位符
5.undefined:未定义。如果一个变量没有给初始化值,就会被默认赋值为undefined
*引用数据类型:对象
4.变量
*变量:一小块存储数据的内存空间
*Java语言是强类型的语言,而JavaScript弱类型的语言。
强类型语言是在开辟存储空间时定义了空间将来存储的数据类型,未来只能存储固定的数据类型
弱类型是在开辟存储空间时没有定义了空间将来存储的数据类型,可以存放任意数据类型
*语法:
*var 变量名=初始化(可有可无);
5.运算符
1.一元运算符:只有一个运算数的运算符
++,--,+(正号),+3
*++ --:自增(自减),符号在前,先自增再运算。符号在后,先运算再复制
注意:再js中,如果运算数不是运算符所要求的类型,那么js引擎会自动将运算数转化为number类型。
string转number:按照字面进行转化。如果字面不是数字,则转为NaN(不是数字的数字)
如 var a=+'123' var b='abc' 前者转化为123的number类型。后者转化为NaN。NaN与任何数做运算还是NaN
boolean转数字:true转为1,false转为0.
2.算数运算符
+,-,*,/,%
3.赋值运算符
=,+=,-=...
4.比较运算符
> < <= == ===(全等于)
1.类型相同:直接比较
*字符串:按照字典顺序比较。按位注意比较,直到得出大小
2.类型不同:先进行类型转化,在比较
*===:全等于。在比较之前先判断类型。类型不一样直接返回false
5.逻辑运算符:
&& || !
*其他类型转boolean:
1.number:0或NaN为假,其他位真
2.string:除了空字符串(不是null而是"")为假,其他都为真
3.null&undefined:都是false
4.d对象:说有对象都是true
6.三元运算符
? : 表达式
var a=3
var b=4
var c=a>b? 1:0
6.流程控制语句
1.if...else
2.switch
*在Java中,switch语句接受的的数据类型:byte int short char 枚举 String
*在js中,switch可以接受任意数值类型。
3.while
4.for
5.do...while
7.js特殊语法
1.语句以分号结尾,如果一行只有一条语句;可以省略(不建议)
2.变量的定义使用var关键字,也可以不使用
用:定义的变量是局部变量
不用:定义的变量是全局变量(不建议使用)
基本对象
Function:函数对象
1.创建
1. var fun=new Function(形式参数列表,方法体)(没啥用,可以忘记,并不符合我们定义方法的逻辑)
2.function 方法名称(形式参数列表){方法体}
3.var 方法名=function(形式参数列表){方法体}
注意:var fun3= function (a,b) 第三种的定义方法中没有new,写了会出错
2.方法
3.属性
length属性代表形参个数
4.特点
1.方法定义时,形参的类型不用写
2.方法是一个对象,如果定义名称相同的方法,会覆盖之前的方法
3.在js中方法的调用与方法的名称有关,与方法的形参列表无关
4.在方法声明中有一个隐藏的的内置对象(数组),arguments,封装所有的实际参数
5.调用
方法名(实参列表)
Array
1.创建
1.var arr=new Array(元素列表)
2.var arr= new Array(默认长度)
3.var arr=[元素列表];
2.方法
join():将数组的元素按照指定的分隔符拼接成为字符串,默认用逗号,arr4.join("")无分隔符
push():向集合的尾部添加一个或更多的元素,用返回新长度
3.属性
4.特点
1.js中,数组的元素类型是可变的。
2.在js中,数组的长度时可变的。
Date
1.创建
1.var arr=new Array(元素列表)
2.var arr= new Array(默认长度)
3.var arr=[元素列表];
2.方法
join():将数组的元素按照指定的分隔符拼接成为字符串,默认用逗号,arr4.join("")无分隔符
push():向集合的尾部添加一个或更多的元素,用返回新长度
3.属性
4.特点
1.js中,数组的元素类型是可变的。
2.在js中,数组的长度时可变的。
Math
1.创建:
*特点:该对象不用创建直接可以使用。 Math.方法名()
2.方法
random():返回0~1之间的一个随机数。包含0不包含1
ceil():对数字进行向上舍入成整数
floor():对数字进行向下舍入成整数
round():把数四舍五入成整数
3.属性:
PI
RegExp:正则表达式对象
1.正则表达式:定义字符串的组成规则。
1单个字符:[]
如:[a],[ab],[a-z],[a-zA-Z0-9]//a,a或b,a到z,a到z A到Z 0到9
*特殊的符号代表特殊含义的字符
\d:单个数字字符[0-9]
\w:单个单词字符[a-zA-Z0-9]
2.量词符号:
?:表示出现0次或1次
*:表示出现0次或多次
+:表示出现1次或多次
{m,n}:表示次数 m<=数量<=n
*m如果缺省:{,n}:表示最多出现n次
*n如果缺省:{m ,}:表示最少出现m次
\w*:表示由单词字符构成单词字符出现0次或多次
var reg1=new RegExp("\\w{0,20}")
var reg2=/\w{6,12}/ //以单词符号开头,单词符号结尾,建议使用
3.开始结束符号
*^:开始
*$:结束
2.正则对象
1.创建
1.var reg=new RegExp("正则表达式")
2.var reg=/正则表达式/
2.方法
1.test(参数);验证指定字符串是否符合正则的规范
Global
1.特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用. 方法名();
2.方法:
下面两种方法的编码跟节码方式都相同,不同的是第二种的编码方式编码的字符更多不单单是中文
encodeURI():url编码
decodeURI:url解码
encodeURIComponent():url编码
decodeURIComponent():url解码
parseInt():将字符串转化为数字
*注意判断每一字符串是否为数字,直到不是数字为止,将前面的数字部分转化为number。一开始没有数字直接NaN
isNaN():判断一个值是否为NaN
*NaN六亲不认,连自己都不人,NaN参与的等等运算全部都为false
eval():将JavaScript字符串,转化为脚本代码执行
如:var jscode="alert(102)";
eval(jscode);
执行的就是字符串中写出的代码,跳出弹窗。
3.url编码
一个中文GBK站2字节,utf 8占3字节。将中文写成二进制格式,每4位转化为一个16进制数字。每两个数字用一个%号过去隔开来。