For/In循环
var person={fname:"john",lname:"Doe",age:25};
for(x in person){
txt = txt +person[x];
}
对象的特性
访问对象属性:
方法一:preson.lastname;
方法二:person["lastName"];
访问对象的方法:
//对象的写法:键值对的形式书写,即使是方法也是方法名:function(){....} 即方法名:方法体
var person = {
firstName:"john",
lastName:"Doe",
id:5566;
fullName:function(){
return this.firstName+" "+this.lastName;
}
}
访问对象的方法:person.fullName();这样会执行方法体;
如果访问方式为:person.fullName;那么此时意味着访问fullName属性,那么键所对应的值会全部返回出来.
方法的特性:
function 方法名(参数1,参数2){
方法体;
return ...
}
简述:参数只有参数名,不需要声明, 如有返回值则写上return,如没有就不写return,其他地方无两样
如果方法中规定的传入参数是三个,那么传入两个或者更少是可以的,但是方法是依次取传入的值的,如果传入的参数大于规定的值那也是可以的,完全没有问题
类型特性:
typeof "john" //返回string
typeof "32.1" //返回number
typeof false //返回boolean
typeof [1,2,3,4] //返回object
typeof {name:'john',age:34} //返回object
typeof NaN //返回number
typeof new Date() //返回Object
typeof function(){} //返回function
typeof null //返回object
typeof undefined //返回undefined
type myCar //返回undefined(如果没有声明,有声明的话返回object)
在JavaScript中null表示什么都没有,null是一个只有一个值的特殊类型,表示一个空对象的引用,例如:
var person = null; typeof person; 此时person的类型为对象
var person = undefined;typeof person 此时类型为undefined
在JavaScript中,undefined是一个没有设置值的变量.
undefined和null的区别
- null的类型是对象,undefined的类型是undefined
- null === undefined 为false null == undefined 为ture
JavaScript数据类型
在JavaScript中有5种不同的数据类型:
string number boolean object function
三种对象类型Object Date Array
两个不包含任何值的数据类型:
null undefined
constructor属性
"john".constructor //返回函数 String() { [native code] }
(3.14).constructor //返回函数 Number(){ [native code] }
...
可以使用constructor属性来查看对象是否为数组(包含字符串"Array");
function isArray(MyArray){
return myArray.constructor.toString().indexof("Array")>-1;
}
try catch throw
try 语句测试代码块的错误
catch 语句处理错误
throw 语句创建自定义错误
function myFuncton(){
try{
var x = document.getElementById("demo").value;
if(x=="") throw "值为空";
if(isNaN(x)) throw "不是数字";
if(x>10) throw "太大";
if(x<5) throw "太小";
}catch(err){
var y = document.getElementById("mess");
y.innerHTML="错误:"+err+".";
}
}
JavaScript变量提升
JavaScript中,函数及变量的声明都将被提升到函数的最顶部.
JavaScript中,变量可以在使用后声明,也就是变量可以先使用在声明
例如:
x = 5;//变量x 设置为5;
elem = document.getElementById("demo");//查找元素
elem.innerHTML = x; //在元素中显示x
var x; //声明x
但是JavaScript的初始化不会提升
例如:
elem = document.getElementById("demo")//查找元素;
elem.innerHTML = x;
var x = 10; ///这时候声明与初始化放在后面了,那么此时elem.innerHTML的值为undefined
注:尽量在头部声明你的变量
switch注意事项:
直接上案例:
var x = 10;
switch(x){
//这样是不对的,switch语句会使用恒等计算符(===)进行比较,所以是没有效果的
case "10":alert("hello");//类型不对
}
浮点型数据使用注意事项
# JavaScript中的所有数据都是以64位浮点型数据(float)来存储.
# 所有的编程语言,包括JavaScript,对浮点型数据的精确度都很难确定
var x = 0.1;
var y = 0.2;
var z = x+y; //z不等于0.3
if(z==0.3) //所以这里逻辑表达式返回的是false
可以用整数的乘除法来解决:
var z = (x*10+y*10)/10; //z的结果为0.3
JavaScript字符串分行
可以向下面这种方式使用断行语句:
var x =
"hello world!";
但是,在字符串中直接使用回车换行是会报错的:
var x = "hello
world!";
字符串断行需要使用反斜杠(\)
var x = "hello \
world!";
函数中,return 和所return的内容必须同行,否则会返回undefined;
javascript:void(0)含义
javascript:void(0)中最关键的是void关键字,void是javascript中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值
语法格式:
void func()
javaxcript:void func();
或者
void(func())
javascript:void(func())
以下例子什么都不返回
单击此处什么也不会发生
以下示例,在用户点击链接后会显示警告信息
函数
分号是用来分隔可执行javascript语句
由于函数声明不是一个可执行语句,所以不以分号结束.
函数表达式:
var x = function(a,b){return a*b};
var z = x(4,3);
此时该匿名函数赋值给x是一条可执行语句,所以需要分号,
该函数实际是一个匿名函数
构造函数Function()
var myFunction = new Function("a","b","return a*b");
var x = myFunction(4,4);
实际上可以不用构造函数,直接:
var myFunction = function(a,b){return a*b}
var x = myFunction(4,4);
在javascript中,很多时候,我们需要避免使用new关键字.
函数提升,
在javascript中,变量的声明以及函数的声明默认都会提升,无论在使用前写函数的声明,
还是使用后写函数的声明都会被提前.不会出现undefined
自调用函数
函数表达式可以自调用
自调用表达式会自调用
如果表达式后面紧跟().则会自动调用
实例:
(function(){
var x = "hello!!!"; //我将调用自己
})();
函数可作为一个值使用
实例:
function myFunction(a,b){
return a*b;
}
var x = myFunction(4,3)*2;
函数是对象
在javascript中使用typeof操作符判断函数的类型时返回的是function.
但是javascript函数描述为一个对象更加准确,
javascript中函数有属性和方法
实例:
function myFunction(a,b){
return arguments.length; //该属性返回函数调用过程接收到的参数的个数
}
var txt = myFunction.toString(); //该方法会返回函数的声明;
javascript函数参数
显示参数:在函数定义时列出
隐示参数:在函数调用时传递给函数真正的值
参数规则:
- 函数定义时显示参数没有数据类型
- 函数对隐示参数没有进行类型检查
- 函数对隐示参数没有进行个数检查
默认参数:
如果函数在调用时未提供隐示参数,参数会默认设置为undefined,有时这是可以接受的,但是建议最好为参数设置一个默认值,实例:
function myFunction(x,y){
if(y==undefined){
y=0;
}
}
还有一种更简单的设置默认参数的方式
function myFunction(x,y){
y = y||0; //如果y已经定义,则返回y,因为y是true,否则返回0,因为undefined为false.
}
Arguments对象
JavaScript函数有个内置arguments对象.
argument对象包含了函数调用的参数数组
通过这种方式你可以很方便遭到最好一个参数的值
x = findMax(1,12,234,555,325);
function findMax(){
var i,max = 0;
for(i=0;imax){
max = arguments[i];
}
}
return max;
}
值传递:
在函数中调用的采纳红素是函数的隐式参数.javascript隐式参数通过值来传递,函数仅仅只是获取值,如果函数修改从参数的值,不会修改显示参数的初始值(在函数外定义).隐式参数的改变在函数外是不可见的.
对象传递参数:
在javascript中,可以引用对象的值,因此我们在函数内部修改对象的属性就会修改其初始值.修改对象属性可作用于函数外部(全局变量),修改对象的属性在函数外是可见的.
函数调用
使用构造函数调用
function myFunction(arg1,arg2){
this.fullName=arg1;
this.lastName=arg2;
}
var x = new myFunction("john","Doe");
x.firstName;
作为函数方法调用函数:
在javascript中,函数是对象,javascript函数有他的属性和方法.
call()和apply()是预定义的函数方法,两个方法可用于调用函数,两个方法的第一个参数必须是对象本身.
示例:
function myFunction(a,b){
return a*b;
}
//第一种方法调用
myFunction.call(myObject,10,2);
//第二种方法调用
myArray = [10,2];
myFunction.apply(myObject,myArray);
两个方法都是用了对象本身作为第一个参数,两者的区别在于第二个参数
apply传入的一个参数数组,而call传入的是一个个参数