JavaScript基础

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=functionn1,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也会认为含义相同
要进行严格比较,就要使用===,!==,会在类型相同的类型下进行比较

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值