您的位置:首页 > Web前端 > JavaScript

JavaScript基础

2016-07-30 21:31 441 查看
Netscape和Sun公司联合ECMA(欧洲计算机制造商协会)对JavaScript语言进行了标准化。于是出现了ECMAScript语言,这是同一种语言的另一个名字。虽说ECMAScript这个名字没有流行开来,但人们现在谈论的JavaScript实际上就是ECMAScript。

JavaScript用来实时操控页面和改变样式,负责内容如何响应事件,是行为层。

写在哪儿

1.写到head标签中的script标签之间

2.存在一个扩展名为.js的独立文件
<script src=”file.js” type="text/javascript"></script>
(type属性可以省略,脚本默认为js)

3.放到文档最后,标签之前,这样能使浏览器更快的加载页面

调试

用浏览器进行调试,F12调出调试窗口,或者用火狐浏览器的FireBug.

alert(“Hello World”);//弹出一个警告框(但会让程序停止,有的时候可以用console.log)

console.log(“Hello World”);//打印到控制台,调试的时候用

控制台

设置断点

添加监视

数据类型

js是一种弱类型的语言,不严格的检查数据类型

可以用typeof运算符来判断数据的类型

var a=2;

alert(typeof a);//输出number

原始类型

String类型

String类型是唯一没有固定大小的原始类型。

字符串字面值是由双引号或单引号声明的。

var sColor1 = “red”;

var sColor2 = ‘red’;

Number类型

Number类型,既可以表示32位的整数,还可以表示64位的浮点数。

特殊的Number值

Number.MAX_VALUE和Number.MIN_VALUE,它们定义了Number值集合的边界。所有 ECMAScript 数都必须在这两个值之间。不过计算生成的数值结果可以不落在这两个值之间。

当计算生成的数大于 Number.MAX_VALUE 时,它将被赋予值 Number.POSITIVE_INFINITY,意味着不再有数字值。同样,生成的数值小于 Number.MIN_VALUE 的计算也会被赋予值Number.NEGATIVE_INFINITY,也意味着不再有数字值。如果计算返回的是无穷大值,那么生成的结果不能再用于其他计算。

事实上,有专门的值表示无穷大,(如你猜到的)即 Infinity。Number.POSITIVE_INFINITY 的值为 Infinity。Number.NEGATIVE_INFINITY 的值为 -Infinity。

NaN,表示非数(Not a Number)。NaN 是个奇怪的特殊值。一般说来,这种情况发生在类型(String、Boolean 等)转换失败时。例如,要把单词 blue 转换成数值就会失败,因为没有与之等价的数值。与无穷大一样,NaN 也不能用于算术计算。NaN 的另一个奇特之处在于,它与自身不相等。

Boolean类型

Boolean类型有两个值,true和false。

即使false不等于0,0也可以在必要时被转换成false,这样在Boolean语句中使用两者都是安全的。

Undefined类型

Undefined类型只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined。

var oTemp;

alert(typeof oTemp);//undefined

值undefined并不同于未定义的值。但是,typeof运算符并不真正区分这两种值。

var oTemp;

alert(typeof oTemp);//undefined

alert(typeof oTemp2);//undefined

两个变量输出的都是undefined,即使变量oTemp2没有被声明过。如果对oTemp2使用除typeof之外的其他运算符的话,会引起错误,因为其他运算符只能用于已声明的变量上。

下面的代码将引发错误:

var oTemp;

alert(oTemp2==undefined);

当函数无明确返回值时,返回的也是值undefined

function testFunc(){

}

alert(testFunc()==undefined);//true

Null类型

Null类型,只有一个值null。值undefined实际上是从值null派生来的,因此定义它们为相等。

alert(null==undefined);//true

尽管两个值相等,但它们的含义不同。

undefined是声明了变量但未对其初始化时赋予该变量的值

null则用于表示尚未存在的对象。如果函数或方法返回的是对象,那么找不到该对象时,返回的通常是null。

引用类型

函数

第一种声明方式

function multiply(num1,num2){
var tatal=num1+num2;
return total;
}

multiply(10,2);


第二种声明方式(比较常用)Lambda函数(匿名函数)

var func=function(参数){
方法体
};//注意这里要加分号


js函数中都默认有一个arguments参数

var func=function(){
var arr=arguments;

for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
};

func(2,23,3,"sd",true);//2 23 3 sd true


若给函数添加两个参数的话,n1的值会等于arr[0]的值为2,n2的值会等于arr[1]的值为23

var func=function(n1,n2){
var arr=arguments;

for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}
console.log(n1);
console.log(n2);
};

func(2,23,3,"sd",true);


js不支持重载

有两个函数名相同的函数,第二个会把第一个覆盖掉

function f(v1){
alert(v1);
}

function f(v1,v2){
alert(v1+","+v2);
}

f(1);//1,undefined


但可以用arguments模拟函数的重载,length属性为参数的个数

var foo=function(){
switch(arguments.length){
case0:func1();break;
case1:func2();break;
…
default:funcN();break;
}
}


Function对象

Function参数中最后一个参数时方法体,前面的参数都是该方法的参数

var getMax=function(n1,n2){
return n1>n2?n1:n2;
};

var func=new Function("n1","n2","return n1>n2?n1:n2;");//这句话和前一句话相同
func(n1,n2);

new Function("n1","n2","return n1>n2?n1:n2;")(n1,n2);//这句话相当于前两句话


数组

数组是值(value)的有序集合

第一种声明方式,利用构造方法创建

var cars=new Array();

cars[0]=”Audi”;

cars[1]=”BMW”;

cars[2]=”Volvo”;

第二种声明方式

var cars=new Array(“Audi”,”BMW”,”Volvo”);

第三种声明方式,字面值

var cars=[“Audi”,”BMW”,”Volvo”];

对象

js是面向对象的语言

js中的对象就是键值对

对象是一个无序的“‘名称/值’对”集合

js没有类,直接使用构造方法创建对象

1.创建一个函数

2.new这个函数

通过构造方法来创建对象 构造函数的首字母大写

function Person(n){
this.name=n;
this.say=function(){
alert(this.name);
};
}

var p=new Person("Danny");
console.log(p.name);
p.say();


或通过JSON格式来定义

var o={
name:"Danny",
age:19,
seyHello:function(){
alert("Hello");
};
};


键可以是字符串

可以写成 “name”:”Danny”,

o.name;

o.sayHello();

在js中支持将对象当做数组使用(关联数组)

o[“name”];

o[“sayHello”]();

js支持动态成员

如果一个对象没有定义Member的属性,但是现在希望添加一个

只需要 对象.Member=值 那么就可以给这个对象创建该成员了

var o={};
o.name=”agd”;
o.sayHello=function(){
alert(“hello”+this.name);
};

o.sayHello();


类型转换



转换成字符串,所有对象都有toString()方法

数字转换成字符串

数字+“”

数字.ToString()

String(数字)//强制类型转换, var a=String(50);

字符串转数字

字符串-0

parseInt()

parseFloat()

Number(字符串)

转换成布尔值

if(!!val)

Boolean(值)

能力判断

判断某一个对象是否具有某个方法,如果有使用自定义的,如果没有就手动添加一个

if(!o.foo){

o.foo=function(){};

}

foo不存在的话为undefined,转换成bool类型为false,再!就变成了true

即foo不存在的话就添加一个

逻辑运算符

==会认为空字符串与false的含义相同,“123”和123也会认为含义相同

要进行严格比较,就要使用===,!==,会在类型相同的类型下进行比较
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript