每周更新
基本概念
基础
基本类型方面大致与java类似,本篇文章将根据学习进度持续更新一些不同之处。
同java一样条件控制语句有时候可以不用花括号来将他包裹,但为了代码意图清晰度,建议全部用代码块,哪怕只有一条语句。
ECMScript的变量没有int、String、double等数据类型的声明,只需要用var便可自动定义。
基本数据类型有五种:Undefined、Null、Boolean、Number、String和一种复杂数据类型Object,
可使用typeof来检测数据类型。
数据类型 | 含义 |
---|---|
Undefined | 使用var但并未初始化 |
Null | 观察对象是否保存对象 |
Number | 数值类型 |
String | 字符串 |
Object | 对象 |
这里要注意Number里有一个特殊类型 NaN——非数值,两大特点:1,任何涉及NaN的操作都返回NaN
2.NaN与任意值不相等,包括NaN。
为了准确的表示你想表示的进制,一般会使用parseInt(“数字”,进制)来确定数字进制,建议十进制也这样写。
语句方面
多了一个新的语句 with——为了简化同一个对象的工作1
2var qs =location.search.substring(1);
var url=location.href;
使用with后1
2
3
4with(location){
var qs=search.substring(1);
var url=href;
}
大量使用会导致性能下降,开发大型程序时不建议使用。
由于ECMScript 不能进行方法的重载,所以一般都使用arguments对象和参数一起使用来代替重载1
2
3
4
5
6
7function doAdd(num1,num2){
if(argument.length==1){
alert(num1+10);
}else if(arguments.length==2){
alert (argument[0]+num2);
}
}
作用域
同java一样变量和函数有他的作用域,JavaScript提供一种延长作用域的方法就是上面的with语句
1 | function buildUrl(){ |
在这里调用了location中的href这个本不在buildUrl作用域的变量,因为使用with接收了location这个对象,就类似与java中location.href
还有一个很特殊的就是JavaScript中如果没用var声明,将会自动归为全局变量,所以为了避免混淆,一般最好声明变量,而且访问局部变量的速度也要比全局变量来的快得多。
引用类型
有点类似与java中的对象引用
引用类型:Object,Array,Date,Function,RegExp
Object
这里出现了两种引用方式:
1、常见的new方法。就像那个笑话:没对象,我们就new一个出来。
2、类似于java对象的定义,叫对象字面量表示法1
2
3
4var person ={
name:"sjj",
age:20 //为对象属性赋值
}
因为我们的属性名可以使用关键词和保留字,所以除了和java里那样使用点表示法访问参数,
也可以使用方括号语法,方括号也可以通过变量来访问1
2person.name;//点表示法
person["name"];//方括号语法
Array
数组类型,有别于java的是,它并不规定保存的类型,这就很无赖,第一个可以存数字,第二个可以存字符串,第三个甚至可以放对象,连大小也可以动态调整,可以说是非常随意了。
同样创建数组的方法也有两种:
1、 Array构造方法
2、 数组字面量表达法1
2var color= new Array ;//Array构造方法
var colors = ["red","blue","green"];//数组字面量表达法
前面提到了数组的长度可以动态调整,只需要手动设置length值便可以改变大小。
也提供了检测是否为数组的方法:isArray,转换为字符串:toString(),
一些方法
名称 | 表达 |
---|---|
是否为数组 | isArray |
转换为字符串 | toString() |
字符串间隔方式的改变 | join() |
栈方法 | push()将数据推入数组最后并返回、pop()将数组最后一项移除并返回 |
队列方法 | push()将数据推入数组最后并返回、shift()将数组第一项移除并返回、unshift()在数组前端插入项并返回 |
重排序方法 | reverse()反转顺序、sort()按升序排序 |
同时使用栈方法和队列方法可以很方便的在数组插入移除数据。
接下来介绍一个强大的数组方法,可以在任意位置删除、插入、替换项,极其方便。
splice(起始位置,删除项数,插入项)
查找项的位置: indexOf(查找项,查找起点)、lastindexOf(查找项,查找起点)