javaScript函数

一、本章目标

函数声明 函数语法 函数调用 函数中的arguments和this 类型转换 常见函数

二、什么是函数?

  1. 可视为普通对象,和其他数据类型一样

  2. 可以赋值给变量,可以声明

  3. 函数会在某代码调用它时被执行。

三、为何使用函数?

  1. 能够对代码进行复用:只要定义一次代码,就可以多次使用它。

  2. 能够多次向同一函数传递不同的参数,以产生不同的结果

四、函数的声明

1. 显式声明
function 函数名( [参数[,参数....]]){
[函数体]
[return [表达式];]
}
调用:函数名([参数[,参数....]]);
2.匿名声明,赋值给一个变量,
可以把这个变量名视为函数名匿名的写法,
只能是先声明,后调用函数
本质是一个对象
var 函数名 = function([参数[,参数....]]){
[函数体;]
[return [表达式];]
}
 调用:函数名([参数[,参数....]]);

五、函数中的arguments和this

  1. arguments:是函数对象中隐含的一个类似于数组的参数,能把js的实际参数储存起来。

  2. arguments.length: 检测函数参数的个数。

  3. arguments[0]:取出参数的第一个参数。

function ar(){
console.info(arguments[1]);
}
ar(1,2);
function  add(){
for(var i=0;i<arguments.length;i++){
console.info(arguments[i]);
}
}
add(1,2);
function add(x,y){
   console.info(x);
   console.info(y);
   var c=x+y;
   console.info(c+arguments[2]);
}
add(1,2,50);
function add(x,y){
   var c=x+y;
   console.info(c);
}
function add(x,y,z){
   console.info(z);
   var c=x+y+z;
   console.info(c);
}
add(1,2);
add(1,2,3);

总结:js函数直接忽视后面多出来的参数,无论后面加多少实参,只会匹配和形参数量相等的前面几个。如果没有对应的形参(实际参数少于形参数目)传入,值是Undefined。 如果超出形参数目的实参不传递其值,保存在arguments中,如果需要这些实参,两种方法: 1.在函数中加参数。 2.arguments[x]取对应的参数。

 

  1. this

//模拟java写Person类
function Person(id){
//属性id`
this.id=id;
// 方法getId()
this.getId=function(){
return this.id;
}
}
var p1=new Person(123);
console.info(p1.getId());
var p2 =new Person(125);
console.info(p2.getId());
function showColor(){
console.info(this.color);
}

var zhangsan = new  Object;
zhangsan.color="red";
zhangsan.kanColor=showColor;
zhangsan.kanColor();

var lisi = new Object;
lisi.color="green";
lisi.findColor=showColor;
lisi.findColor();

总结; this -- 与函数调用有关(谁调用了这个函数,this就是谁),总是指向调用该方法的对象。

因为在实例化对象的时候,总是不能确定开发者使用什么样的变量名,使用this,即可在任何地方重用同一个函数。

 

 

 

 

 

 

六、类型转换

转换函数

parseInt() 可以解析一个字符串,返回一个整数。 parseFloat() 可以解析一个字符串,返回一个小数。

console.info(parseInt("12abc"));
console.info(parseInt("  22.5 "));
console.info(parseInt("abc"));
console.info(parseInt("abc12"));
console.info(parseFloat("12abc"));
console.info(parseFloat("  22.5 "));
console.info(parseFloat("abc"));
console.info(parseFloat("abc12"));
console.info(parseFloat("1.2.3.4"));

注意:只有字符串前面的数字被返回,开都得和结尾允许是空格。 如果第一个字符不能被转换成数字,那么返回NaN

强制转换

Boolean(value):把给定的值转换成Boolean类型。

Number(value):把给定的值转换成数字类型(浮点或整数)。

 

 

String(value):把给定的值转换成字符串。

console.info(Boolean(""));
console.info(Boolean("hello"));
console.info(Boolean(100));
console.info(Boolean(null));
console.info(Boolean(0));
console.info(Boolean(undefined));

空字符串,null对象,0,undefined为fasle,其它为true。

console.info(Number(false));
console.info(Number(true));
console.info(Number(null));
console.info(Number(0));
console.info(Number("1.5"));
console.info(Number("2.3.5"));
console.info(Number("12abc"));
var a= new  Boolean();
var b= 123;
console.info(String(a));
console.info(String(b));

isNaN(x)函数用于检查其参数是否是非数字。 如果x是特殊的,不是数字(或者能转换成这样的值。),返回true, 如果x是数字,则返回false。

console.info(isNaN(123));
console.info(isNaN(-123));
console.info(isNaN(9+1));
console.info(isNaN(0));
console.info(isNaN("hello"));
console.info(isNaN("123"));
posted @ 2020-03-20 15:38  初雨了然  阅读(176)  评论(0)    收藏  举报