我与夏风皆过客,惟愿博肖揽星河!

xzwyb

导航

JS函数、内置对象

一、函数

1、函数:一段包含应用程序的程序块,此程序块可以被其他程序通过函数名调用,目的是提高代码公用性、可维护性。

2、函数定义语法(两种方式)

查看代码
//计算两个数的和
//第一种
function add(a,b){
	var sum=a+b;
	return sum;
}
//第二种
var add1=function(a,b){
	return a+b;
}
		
//调用函数
var sum=add(3,5);
console.log("a+b="+sum);
var sum1=add1(5,5);
console.log("a+b="+sum1);

3、函数体内的程序在函数定义时并不执行,只有在调用函数并传递给有效的参数后才能执行函数体内的程序

  • function:关键字,在定义函数时使用function来声明当前程序块为函数。function在因为使用场景不同,作用也不同。
  • functionname:函数的名称,在执行函数时,需要使用函数名调用函数中的程序块。
    • 命名规则如下:
      • 符合javascript标识符的命名规则。
      • 首字母小写,多个单词组合时除首单词外,其余单词的首字母大写。
      • 可以巧妙的使用缩写,例如rowNum表示行数。
      • 重名规则如果在一个网页中出现多个同名函数(不区分参数),则最后定义的函数将覆盖之前的函数
  • parameter:形式参数,在定义函数时,该参数并没有实际的数值,因此称为形式参数,形式参数为 0-多个,用逗号分开。函数体内可将形参作为变量使用。

4、函数调用时参数说明:

  • js中调用函数时,实际传递的参数叫实参,实参的数量可以与形参的数量不同
  • 可以计算,从第1个开始匹配,没有被赋值的参数undefined,参与运算结果是NaN(非数字)。
  • 如果给的实参的数量大于形参,正常执行

5、在js函数内部,维护了一个arguments对象,专门用来存储参数,数组,arguments[0],arguments[1],arguments[2]。

function add(a,b,c){

   return a+b+c;// 相当于return arguments[0]+arguments[1]+arguments[2];

   }

for(a in arguments){

sum += arguments[a];

}

在声明数组时,虽然参数可以任意变化的,但根据意义,有几个参数写几个

return : 返回,函数执行后返回给调用程序的值,一般为执行结果.

  • 如果函数体内没有return,则js引擎会在函数体最后一句程序语句后执行return;代表返回一个undefined;
  • 可以使用return跳出程序函数
  • 不需要返回值类型,可以正常返回值,正常接收就可以。

定义函数的方式:

  • 普通函数方式:function functionName(paramter) {}
  • 匿名函数:window.onload = function (paramter){}
  • 函数表达式:var f = function(paramter) {}
  • Function对象:不建议使用,但可以帮助我们理解js的核心;var b = new Function('a','b','return a+b');

二、内置对象

1、对象类型概述

宿主:寄居在主人家。Javascript需要插入或运行在浏览器内,可以称js宿主在浏览器提供的环境内,浏览器是js的宿主环境。

宿主对象:由 ECMAScript 实现的宿主环境提供的对象。通俗的讲就是浏览器依据w3c制定的规范(DOM、htmlDOM)开发出来的对外接口,而这些接口是js对象(当然也要符合ECMAscript标准)。

宿主对象分类(简单理解):

  • DOM:用于操作网页内元素的接口。
  • BOM:用于操作浏览器窗口的接口。

Js内置对象:“独立于宿主环境的 ECMAScript 对象”,浏览器开发商依据标准(ECMA-262)使用原生javascript开发的对象(function)

js内置对象与浏览器、网页上的元素无关。

js内置对象包含Object、Function、Array、String、Boolean、Number、Date、RexExp。

js内置对象在网页加载前就已经可以使用。

Js内置对象分类:

  • 本地对象:javascript开发的引用类型,String、Function、Boolean等,都是function
  • 内置对象:已经被实例化的对象,如Math,内置对象都是Object

2、Math对象

Math对象在网页加载时已经由js引擎创建Math的实例对象。

获取方式

  • Math对象内置接口
  • Math的全局方法,如Math.random();
  • Math的常量,如Math.Pi;
console.log(Math.ceil(2.45));//2.45,向上取整,包括本身,不小于是大于等于
console.log(Math.ceil(-8.0));//-8
console.log(Math.floor(-8.45));//-9,向下取整
console.log(Math.round(2.45));//2,四舍五入
console.log(Math.round(2.5));//3
console.log(Math.max(12,23,45,56));//56,任意多个数的最大值
console.log(Math.min(12,23,45,56));//12,任意多个数的最小值
console.log(Math.PI);
console.log(Math.abs(-10.93));//10.93,绝对值
console.log(Math.pow(2,3));//8,2的3次方
console.log(Math.sqrt(4));2//开平方根
console.log(parseInt(Math.random()*90+10));//随机两位数[0.0,1.0]
console.log(parseInt(Math.random()*100+400));

7.3基本类型的封装类型

js的内置对象提供了对字符、数字、布尔三个基本类型的封装

封装类型中的属性和函数可以协助完成对基本类型数据的操作,例如截取字符串等。

3、String类型

查看代码
var s="hello world";
console.log(s.length);//11,索引0~10
console.log(s.charAt(8));//r,不存在为空字符串,不会报错
console.log(s.charCodeAt(7));//索引为7位置的元素o对应的Unicode值
console.log("hello".concat("world"));//helloworld,
console.log(s.slice(1,4));//ell,获取字符串的一部分,包括第一个参数,不包括右边,左闭右开
console.log(s.substring(1,4));//ell,相当于slice()
console.log(s.substr(1,4));//ello,0是索引值,3是个数
console.log(s.indexOf("el"));//检索字符串,从左向右,返回的是第一个字符的索引位置,不存在则返回-1
console.log(s.lastIndexOf("o"));//7,从右向左,查第一次出现,但返回的结果仍然是从左向右的索引
var ss=" hello world ";
console.log(ss.trim());//去除左右两端的空格
console.log(ss.toUpperCase());//转大写
console.log("WEIF".toLowerCase());//转小写
console.log(s.startsWith("h"));//true,判断是不是开头结尾
console.log("hello.java".endsWith(".java"));//true,判断文件扩展名
console.log(s.replace("l","bx"));//hebxlo world,替换第一个出现的
var info="rose-23-123456-北京";
var arr=info.split("-");//根据—分割,如果参数为""则是把所有字符各自分割出来
//遍历数组拿到数据
for (var i = 0; i < arr.length; i++) {
	console.log(arr[i]);
}

三、JS数组

1、与其他语言(java)的数组的相同点:

  • 功能相同,都是存储介质。
  • 操作相同,都是需要循环遍历数组的内容,同时都提供了修改数组数据的方式。

2、与其他语言(java)的数组的区别:

  • Js数组对象是由js编写的本地对象,而其他语言中的数组都是独立的数据类型。
  • Js数组的长度可变化。
  • Js数组存储的数据可以为不同数据类型。
  • Js数组由于是对象,因此可以为数组对象设定属性。

3、数组的初始化

  • 数组初始化后可以设定长度,若没有赋值,则数组中的元素为undefined
  • 如果访问数组的索引号大于数组长度,则出现程序异常。
  • 通过数组的length属性可以访问数组的实际长度。
  • 数组的内容可以为任意数据类型。

数组函数
var arr = [1, 2, 3, 4, 5];
var arr1 = arr.reverse(arr);
//按照[1,2,3,4,5]格式输出数组arr1的内容
console.log(arr1);
console.log("-----第一种-----");
var s = arr1.join(",");
console.log("[" + s + "]");

function printArr(arr) {
	console.log("-----第二种-----");
	var str = "[";
	for (var i = 0; i < arr.length; i++) {
        if (i != arr.length - 1) {
            str += arr[i] + ",";
        } else {
            str += arr[i] + "]";
        }
    }
    str += "]";
    console.log(str);

    console.log("-----第三种-----");
    var str1 = "[";
	for (var i = 0; i < arr.length; i++) {
		if (i == 0) {
			str1 += arr[i];
		} else {
            str1 += "," + arr[i];
		}
	}
	str1 += "]";
	console.log(str1);
	}
printArr(arr);

四、正则表达式

使用一种有规则的字符串来检验目标字符串是否匹配。

用于检查目标字符串是否包含某个小字符串、或将匹配的子串做替换或提取子字符串的位置。

正则表达式与js无关,但可以在js中调用。

数字:^[0-9]*$

n位的数字:^\d{n}$

至少n位的数字:^\d{n,}$

m-n位的数字:^\d{m,n}$

<script type="text/javascript">
    //如果直接写字符串代表字符串当中包含6位连续数字    RegExp("[0-9]{6}");
    //如果要匹配整个字符串而不是一部分/^   $/
    // var reg=new RegExp("/^[0-9]{6}$/");
	var reg=/^[0-9]{6}$/g;//全局查找
	// var reg=/^[0-9]{6}$/;
	var reg=reg.test("123456");//测试是否符合规则,true,false
	console.log(reg);

	//8位以上,数字不能开头,数字,字母表示,8位以上,区分大小写
	var reg2=/^[a-zA-Z][0-9a-zA-Z]{7,}$/;//表示至少7位
	var reg2=reg2.test("wdq2131242");
	console.log(reg2);

	//电话号码:第一位:1;第二位:3,5,8;总长度11
	var reg3=/^1[358][0-9]{9}$/;
	var reg3=reg3.test("17892136712");
	console.log(reg3);
</script>

五、date日期对象

Date对象:提供用于处理日期和时间的属性及方法。

Date对象的内部组成:

  • 构造函数:初始化Date对象实例的构造函数。
  • 静态方法:不需要创建Date实例,直接使用Date调用的方法。
  • 实例方法:Date对象可以直接调用的方法,又包含set、get两种不同的功能。

静态方法:静态方法不需要实例化就可以直接使用日期来调用,Date有两个主要的静态方法。

Number Date.now():返回系统当前时间的格林威治时间,类型为number.

Number Date.parse(‘2012/12/01 16:07:32’)

--参数:代表时间的字符串,格式为yyyy/mm/dd hh:mm:ss。

--返回参数所代表时间的格林威治时间,类型为number。

实例方法:Date的实例对象有三类方法。

以set开头的方法是为实例对象设定时间,

以get开头的方法为获取当前实例对象的时间,

其他方法:包含将日期对象转换为字符串,以及将字符串转换为时间的方法。

查看代码
<script type="text/javascript">
	var date=new Date();
	console.log(date);
	var year=date.getFullYear();
	var month=date.getMonth()+1;
	var day=date.getDate();
	var hour=date.getHours();
	var miunte=date.getMinutes();
	var second=date.getSeconds();
	var time=year+"-"+(month<10?("0"+month):month)+"-"+(day<10?"0"+day:day)+" "
    +(hour<10?"0"+hour:hour)+":"+(miunte<10?"0"+miunte:miunte)+":"+(second<10?"0"+second:second);
	console.log(time);
	//获取当前时间举例1970-01-01的毫秒值
	var time=date.getTime(); 
	console.log(time);
	//第二种方式
	var date2=new Date(time);
	console.log(date2);
	//修改日期对象所对应的时间,用set方法
	var date3 =new Date('2019-06-27');
	console.log(date3);
	var time1=date3.getTime();
	console.log(time1);
	var day1 =new Date('2001-02-02');
	console.log(day1);
</script>

posted on 2022-04-06 17:11  B2328X  阅读(128)  评论(0编辑  收藏  举报