首页 > 代码库 > javascript基础

javascript基础

javascript基础
1.理解javascript基础知识
(1)理解数值
在javascript中,所有数值都是64位双精度,也就是说javascript中整数和浮点数之间并没有什么区别
两者都是数值.
typeof 1
//number
typeof 1.5
//number
(2)javascript中没有内置的十进制数据类型,但javascript为数字提供了两个方法:toPrecision()和foFixed()
这两个方法可以按照固定位数的小数来格式化数值
var num=13.433
num.toFixed(2);
//13.43
var num=1232.4343
num.toPrecision(5);
//1232.43
注意:如果使用一个超出64位范围的数值,或者得到一个超出64位范围的值,javascript将返回一个特殊数值
:-Infinity(负无穷大)或者Infinity(无穷大),除数为0将返回一个Infinity,其他特殊值还包括NaN,它表示
一个"非数值",当试图将一个无效字符串对象转换一个数值时,结果为NaN,在NaN值和数值之间执行一个操作
将返回一个NaN值,可以使用内置的isNaN()函数来检查一个变量是否是NaN值
10*1+100-NaN
//NaN
var x=NaN
isNaN(x)
true
(3)javascript支持8进制和十六进制,八进制字面量用一个0作为前缀,十六进制数值则以一个x作为前缀
(4)javascript内置的Math对象用于常见的数学运算,可以使用Math.round()方法或得两位数的精度
Math.round(.2+.3)/100;
(5)使用字符串:字符串是一个由0个或者多个16位unicode字符组成的系列,使用单引号或双引号将字符串括起
字符串也是不可变对象,因此字符串具有一些相应的属性和方法
"test.javascript".indexOf("s");
//2
"test.javascript".charAt(3);
//t
(6)布尔类型
Boolean类型表示true值和false值,在适当的上下文中,比如在一个if语句中,任何条件判断的值都将被转化为Boolean
值以判断"真"或"假"在条件判断中,空字符串,NaN值,null,undefined,数值0和关键字false都将被计算false其他的任何值
都将被计算为true
if(""){
Console.log("something happen");
}
else{
console.log("nothing happen");
}
//nothing happen
javascript支持的Boolean操作包括,逻辑与(&&)逻辑或(||)逻辑非(!)
function validate(){
var name_input="Jimmy";
var age_input;
return name_input&&age_input;
}
if(validate()){
console.log("pass");
}else{
console.log("fail");
}
//fail


NaN值表示一个非数值的值
typeof NaN
//number
(6)类型之间的比较
javascript具有等于(==)和等同(===)操作符,==操作符是危险的,因为他在执行比较前,强制执行类型
转换
1=="1"
//true
如果左操作数和右操作数真正完全相同===才会返回true
1==="1"
//true
(7)日期简介
javascript内置了Date对象,可以使用new操作符和Date()构造函数来创建Date对象,Date对象用于表示日期和
时间,不带任何参数创建一个新的Date对象,获得的是一个表示当前日期和时间的Date对象
var thisMoment=new Date();
console.log(thisMoment);
//thisMoment.getFullYear();
//2014
(8)其他类型
声明一个变量未对其赋值,或者访问一个不存在的对象属性,结果将会产生一个undefined类型
null是javascript的一个内置对象,它表示没有值,在执行比较运算时,undefined和null两者被转换false
Number
String
Boolean
Object
Function
Array
Date
Regex
Null
Undefined
在使用try...catch语句中,某些附加的内置的error类型非常有用,通常在throw语句中新建error对象
(9)变量
可以通过赋值操作(隐式声明)或者通过var关键字(显示声明)来为声明一个变量,可以使用var关键字来
声明变量,则该变量是持久的,且不能删除该变量,对于一个变量可以多次进行声明,不必担心产生任何
错误,因为初始化的变量会被赋值为undefined
i=0;//隐式声明
var i=0;//显示声明
var x;//undefined
作用域是指变量和对象的可见范围,全局变量global在应用程序的任何地方都是可见的,而局部变量则
在声明该变量的函数内可见
function where(){
var v1="local scope";
v2="globe scope";
}
where();
console.log(v1);//v1 is not undefined
console.lon();//globe scope


2.函数和对象
对象是属性的集合,每一个属性是一个名称和值,属性可以包含除undefined之外的任何类型,在创建对象
之后,可以对属性进行赋值,数组,函数和正则表达式都是对象,数值(number)字符串(string)和布尔值都是
对象(boolean)但他们是不可变的对象,可以采用两种方法来实例化一个对象
(1)使用new关键字来实例化一个对象
var myObject=new Object();
new关键字将调用构造函数(构造器),构造器将初始化新创建的对象,this关键字用于引用当前对象,不能对它进行
赋值,但可以将this关键字赋值给另外一个变量
//构造函数
function Zombie(name){
this.name=name;
}
var smallZombie=new Zombie("Google");
(2)另外一种实例化变量的方法是使用对象字面量,这种方式创建的字面量更像其他语言中的散列或者关联数组
var myObject={}
var objectWithProperty={
"property1" : "a string value",
"property2" : 12
}
两种方法访问属性
objectWithProperty.property1
//a string value
objectWithProperty[‘property‘]
//a string value
var species{
‘mamal‘{
‘name‘:‘string‘
}
}
console.log(species.namal.name);
//string
javascript是一种动态语言,因此更新一个属性只需要重新对属性赋值即可,需要从对象中移除一个属性
使用delete操作符,要遍历对象的所有属性使用for...in循环
var obj={
‘property‘:1,
‘property‘:2
}
var i;
for(i in obj){
console.log(i);
}
//property1
//property2
javascript使用原型继承(prototypal inheritance),对象直接从其他对象继承,从而创建新的对象,简而言之
对象继承了另外一个对象的属性,javascript中没有类(原型就是其他对象的模型)


3.javascript的作用域,闭包和执行上下文
一个内置对象Object.property位于继承层次的顶端,所有其他对象都继承了该对象,在继承树中的每个对象
都可以通过prototype属性链连接起来

javascript基础