第十二天javascript篇之函数,对象,开发时钟实战代码
bigegpt 2024-10-19 02:51 11 浏览
1.昨日回顾
函数
函数的概念:将一段常用代码进行命名,这个名称就叫“函数”。
函数的步骤:(1)先定义函数,函数定义后不能直接执行,必须调用函数,函数才会执行
(2)调用函数:直接写函数名称,后面直接跟一个小括号,小括号中可以有“实参”
函数语法格式:
function functionName([形参1][,形参2][,形参3])
{
实现一个功能的程序代码;
[return 参数]
}
语法说明:
函数名称的命名同变量一样;
形式参数:定义函数的参数就叫“形式参数”,该参数接受调用函数时传递过来的值;
形式参数的命名,同变量也一样;
形式参数不能是具体的值;比如:function getMax(10,20)是错误的
函数定义了,就必须要调用;
调用函数用时,直接写函数名称,后跟小括号,括号中是“实参”;
实际参数:调用函数时,传递的参数叫“实参”,就是“实际的数据”;
形式参数和实际参数的个数和顺序应保持一致;
Return语句:可以调用函数者返回一个结果;
Return语句执行后,立即结束函数的运行;
如果return语句后面,还有其它程序代码,将不再执行;
因此,return语句放在函数的最后面;
JS中是区分大小写的,但关键字一律小写;对象的方法:today.toLocaleString()
全局变量和局部变量
全局变量:可以在任何地方(函数内部和函数外部)使用的变量,就叫“全局变量”;
一般来说,在函数外部定义的变量,是“全局变量”;
省略关键字var定义的变量,也是“全局变量”,一般情况下不要省略;
局部变量:只能在函数内部使用的变量,叫“局部变量”。
注意:在JS中,在函数外部定义的变量,可以在函数内部使用;但在函数内部定义的变量,只能在函数内部使用。
将函数定义作为数据,赋给其它变量
将函数定义,赋给一个基本数据类型的变量
function showInfo()
{
return “我是一个函数”;
document.write(“我是一个函数”);
}
var a = showInfo; //将函数定义(地址),赋给一个变量,变量a是复合数据类型
document.write(a() );
var b = showInfo(); //将函数的执行结果,赋给一个变量b,变量b是基本数据类型
注意的是:函数名showInfo后不能跟小括号;
如果showInfo后面跟了小括号,就是调用函数,将函数的执行结果,赋给a变量,而不是地址
将函数定义,赋给一个数组元素,那么,该数组元素就是一个函数了;
Var arr = [10,20,30];
arr[1] = showInfo(); //arr[1]的值是“我是一个函数”
arr[2] = showInfo; //arr[2]就变成了函数
document.write( arr[1] );
document.write( arr[2]() ); //既然arr[2]是一个函数,在调用时,一定要写小括号
3)将函数定义,赋给一个对象属性,那么,该对象的属性就是一个函数了;
var obj = {
name:“张三”,
age:30,
show:showInfo //将函数定义,赋给了一对象属性
};
obj.show(); //方法和函数的定义是一样的,只是在不同的地方叫法不一样
document.write( obj.name );
基本数据类型和复合数据类型
基本数据类型:是将变量名称和变量的值,都存入“快速内存”“栈内存”;
将基本数据类型的变量,赋给其它变量,是将原来变量的值“复制”一份,放到了新变量中,因此,这两个变量没有任何关系,换句话说:修改其中一个变量的值,另一个变量的值不会改变;
var a = 10; //基本数据类型,在赋值是地,是传值
var b = a; //将a的值,复制一份,传给b
a = 100; //给变量a重新赋值
document.write(b); //求变量b的值,是否会改变
引用数据类型(复合数据类型):它的存储分两个部分,一是把数据存到“慢内存”“堆内存”,二是将变量名称和数据地址存到“快速内存”“栈内存”。
换句话说:就是新变量和旧变量,同时指向了同一个数据地址,只是变量名称不一样。
var arr1 = [1,10,20,30];
var arr1 = new Array(1,10,20,30);
var arr2 = arr1; //将arr1赋给了arr2,其实,这里传的数据地址,并不是具体的数据
arr1[0] = 100; //对arr1中的第1个元素,重新赋值
document.write( arr2[0] );
补充知识点:for in循环
For ……in主要是循环或遍历,数组元素或对象的属性。
注意:如果遍历数组的话,未定义的数组元素,不会输出;只会输出有效数据。
语法结构:
for(index in arr)
{
document.write( arr[index] );
}
参数说明:
arr代表一个数组;
index代表一个数组元素的下标;
举例:
var arr = [1,2,,,,,3,,,,,,,,,,,,,,,,,4];
遍历对象属性
for(name in window)
{
document.write( name );
}
参数说明:
Name就是遍历对象,返回的属性名称;
Window是一个窗口,代表当前浏览器窗口,比如:document、 history、screen、 navigator等
2.函数对象
一个函数对应一个函数对象。
arguments属性:函数对象的一个数组对象属性,包含了所有接收到的参数;
arguments.length:取得所有接收到的参数的个数
arguments是在函数内部来使用;
3.对象
对象是一组属性和方法的集合。
JS中的对象分类:
自定义对象:自己根据需要定义自己的对象;var obj = {}
JS内置对象:
String:字符串对象,提供字符串操作的属性和方法。比如:length
Array:数组对象,提供数组操作的属性和方法。比如:length
Date:日期时间对象,提供访问系统时间日期的信息。比如:getDay()、toLocaleString()
Math:数学对象,提供数学处理的方法。比如:Math.floor()、Math.ceil()、Math.round()
Number:数字对象。比如:toFixed()
Function:函数对象。比如:arguments数组对象
Event:事件对象。比如:onMouseOver、onMouseOut、onClick、onLoad
正则对象:正则表达式,对数据进行更严格的验证。(就业班讲)
BOM和DOM对象(核心)
BOM提供了访问和操作浏览器各组件的途径;
DOM提供了访问和操作网页中各HTML元素的途径
4.自定义对象
对象就是一组属性和方法的集合。
一、创建自定义对象
(1)使用new关键字和Object()来创建一个空对象,然后添加属性和方法
方法就是函数,在对象中的函数,就叫“方法”。
Var obj = new Object();
obj.name = “张三”; //增加一个属性,并赋值
obj.sex = “男”;
obj.age = 30;
obj.isMarried = true;
obj.school = null;
obj.showInfo = function(){
var str = this.name+“的基本资料”;
str += “<br>姓名:”+this.name;
}
onload:当网页加载完成,去执行JS程序代码。
当网页的中所有HTML标记都加载完成后,才会触发onLoad事件;
触发onLoad事件后,会去调用相应的JS程序。
只要<body>中有一个HTML标记没有显示出来,onLoad就不会发生
<body>……</body>……onload事件……调用JS函数——document.write
(2)使用{}来创建对象
Var obj = {
name:“张三”,
sex:true
}
5.JS的内置对象——String对象
一个字符串的变量,就是一个String对象。
一、创建String对象的方法
1)使用new关键字和String()构造函数来创建(不常用)
var strObj = new String(“Welcome”);
var len = strObj.length; //获得字符串的长度
定义一个字符串变量,就对应一个String对象(最常用)
var str = “重蔚自留地”;
var len = str.length;
二、String对象的属性和方法
length:获得字符串的长度,var len = str.length
注意:JS的length是指字符个数,并不是按字节来计算。
charAt(index):返回指定位置的一个字符。
提示:String中的下标与Array中的下标一样。
index:表示指定位置的下标(索引号)
举例:
var str = “Welcome”;
var str1 = str.charAt(str.length-1) //取得最后一个字符
indexOf(substr[,startIndex]):
描述:从原字符串中,查找子字符串,如果找到,返回起点索引号;如果未找到,返回-1。
参数:
substr:子字符串
startIndex:开始查找的位置索引号。如果省略,则从0开始查找。
lastIndexOf(substr[,startIndex])
描述:在原字符串中,从右往左搜索子字符串,如果没有找到,则返回-1。
参数:同indeOf()方法一样
substr(startIndex[,length])
描述:返回一个子字符串。
参数:
startIndex:开始索引号
length:返回几个字符。如果length省略,返回到结束的所有字符。
举例:
var str = “welcome”;
var str2 = str.substr(3,2); // str2 = co
substring(startIndex[,endIndex])
描述:返回索引号从startIndex到索引号endIndex之间的一个子字符串。
参数:
startIndex:开始索引号
endIndex:结束索引号,如果省略,返回到结尾的所有字符。
split(separator)
描述:将一个字符串,用指定分割符separator分成一个数组。
参数:separator就是一个分割符
举例:
Var str = “星期一,星期二,星期三”;
Var arr = str.split(“,”);
search(substr)
描述:查找指定的子字符串,如果没有找到,返回-1
replace(substr,replacement)
描述:在原始字符串中,将一个指定的子字符串,替换成指定的内容。
参数:
Substr:要查找的内容
Replacement:要替换的内容
注意:如果不使用“正则表达式”,则只能替换一次。
var new = str.replace(/X/g,”itcast”); //JS中的正则,是放在//中间的,不能加引号。g参数代表全部替换。
toLowerCase()
描述:转成小写
举例:str.toLowerCase()
toUpperCase()
描述:转成大写
举例:str.toUpperCase()
localeCompare(str)
描述:对字符串使用本地规则进行比较。我们使用的操作系统是中文操作系统,中文操作系统默认的排序规则就按“拼音”先后来排序的。
str1.localeCompare(str2)
如果str1 > str2 则返回一个大于0的值
如果str1=str2 则返回一个等于0的值
如果str1<str2 则返回一个小于0的值
onchange:当选择内容发生改变时,去调用JS验证函数。
6.Array对象
length:取得数组元素的个数
shift():删除第一个数组元素,数组的长度-1。
pop():删除最后一个数组元素,数组的长度-1
unshift():在开头添加一个数组元素,数组的长度+1
push():在最后添加一个数组元素,数组的长度+1
注意:delete删除的是数组元素的内容,而shift()删除的是内容和下标。
join([separator)):将数组各个元素,用指定的连接符,连成一个字符串。与split()正好相反
separator是可选项,如果省略,则用逗号连接。
reverse():反转数组中各个元素,颠倒顺序。
sort()
描述:对数组中各个元素进行排序,默认是按字母的先后顺序排列。
格式:arr.sort([orderby])
参数:orderby是可选参数,它指定排序的规则,一般是一个函数。
(1)对数值进行排序
orderby函数必须接收两个参数,比如a和b;
orderby函数中使用return返回值;
如果a-b>0,返回1
如果a-b=0,返回0
如果a-b<0,返回-1
var arr = [1,2,10,12,3,31,15,19,25,39];
arr.sort(orderby);
function orderby(a,b)
{
return a-b;
}
document.write(arr);
7.Date对象
一、创建Date对象的实例
(1)使用new关键字和Date()构造函数来创建
Var today = new Date(); //注意:如果不带参数,则创建一个当前系统时间的实例
(2)指定一个日期时间字符串参数
Var yestoday = new Date(“1990/10/23 10:09:00”); //可以创建基于某一个时间的一对象实例
二、Date对象的方法
getFullYear():取出四位的年份
getMonth():取出月份,取值0-11
getDate():取出天数
getHours():取出小时数
getSeconds():取出秒数
getMinutes():取出分钟数
getDay():取出星期值,取值:0-6
getTime():取出距离1970年1月1日,0时0分0秒的毫秒数
toLocaleString():转成字符串
相关推荐
- 当Frida来“敲”门(frida是什么)
-
0x1渗透测试瓶颈目前,碰到越来越多的大客户都会将核心资产业务集中在统一的APP上,或者对自己比较重要的APP,如自己的主业务,办公APP进行加壳,流量加密,投入了很多精力在移动端的防护上。而现在挖...
- 服务端性能测试实战3-性能测试脚本开发
-
前言在前面的两篇文章中,我们分别介绍了性能测试的理论知识以及性能测试计划制定,本篇文章将重点介绍性能测试脚本开发。脚本开发将分为两个阶段:阶段一:了解各个接口的入参、出参,使用Python代码模拟前端...
- Springboot整合Apache Ftpserver拓展功能及业务讲解(三)
-
今日分享每天分享技术实战干货,技术在于积累和收藏,希望可以帮助到您,同时也希望获得您的支持和关注。架构开源地址:https://gitee.com/msxyspringboot整合Ftpserver参...
- Linux和Windows下:Python Crypto模块安装方式区别
-
一、Linux环境下:fromCrypto.SignatureimportPKCS1_v1_5如果导包报错:ImportError:Nomodulenamed'Crypt...
- Python 3 加密简介(python des加密解密)
-
Python3的标准库中是没多少用来解决加密的,不过却有用于处理哈希的库。在这里我们会对其进行一个简单的介绍,但重点会放在两个第三方的软件包:PyCrypto和cryptography上,我...
- 怎样从零开始编译一个魔兽世界开源服务端Windows
-
第二章:编译和安装我是艾西,上期我们讲述到编译一个魔兽世界开源服务端环境准备,那么今天跟大家聊聊怎么编译和安装我们直接进入正题(上一章没有看到的小伙伴可以点我主页查看)编译服务端:在D盘新建一个文件夹...
- 附1-Conda部署安装及基本使用(conda安装教程)
-
Windows环境安装安装介质下载下载地址:https://www.anaconda.com/products/individual安装Anaconda安装时,选择自定义安装,选择自定义安装路径:配置...
- 如何配置全世界最小的 MySQL 服务器
-
配置全世界最小的MySQL服务器——如何在一块IntelEdison为控制板上安装一个MySQL服务器。介绍在我最近的一篇博文中,物联网,消息以及MySQL,我展示了如果Partic...
- 如何使用Github Action来自动化编译PolarDB-PG数据库
-
随着PolarDB在国产数据库领域荣膺桂冠并持续获得广泛认可,越来越多的学生和技术爱好者开始关注并涉足这款由阿里巴巴集团倾力打造且性能卓越的关系型云原生数据库。有很多同学想要上手尝试,却卡在了编译数据...
- 面向NDK开发者的Android 7.0变更(ndk android.mk)
-
订阅Google官方微信公众号:谷歌开发者。与谷歌一起创造未来!受Android平台其他改进的影响,为了方便加载本机代码,AndroidM和N中的动态链接器对编写整洁且跨平台兼容的本机...
- 信创改造--人大金仓(Kingbase)数据库安装、备份恢复的问题纪要
-
问题一:在安装KingbaseES时,安装用户对于安装路径需有“读”、“写”、“执行”的权限。在Linux系统中,需要以非root用户执行安装程序,且该用户要有标准的home目录,您可...
- OpenSSH 安全漏洞,修补操作一手掌握
-
1.漏洞概述近日,国家信息安全漏洞库(CNNVD)收到关于OpenSSH安全漏洞(CNNVD-202407-017、CVE-2024-6387)情况的报送。攻击者可以利用该漏洞在无需认证的情况下,通...
- Linux:lsof命令详解(linux lsof命令详解)
-
介绍欢迎来到这篇博客。在这篇博客中,我们将学习Unix/Linux系统上的lsof命令行工具。命令行工具是您使用CLI(命令行界面)而不是GUI(图形用户界面)运行的程序或工具。lsoflsof代表&...
- 幻隐说固态第一期:固态硬盘接口类别
-
前排声明所有信息来源于网络收集,如有错误请评论区指出更正。废话不多说,目前固态硬盘接口按速度由慢到快分有这几类:SATA、mSATA、SATAExpress、PCI-E、m.2、u.2。下面我们来...
- 新品轰炸 影驰SSD多款产品登Computex
-
分享泡泡网SSD固态硬盘频道6月6日台北电脑展作为全球第二、亚洲最大的3C/IT产业链专业展,吸引了众多IT厂商和全球各地媒体的热烈关注,全球存储新势力—影驰,也积极参与其中,为广大玩家朋友带来了...
- 一周热门
- 最近发表
-
- 当Frida来“敲”门(frida是什么)
- 服务端性能测试实战3-性能测试脚本开发
- Springboot整合Apache Ftpserver拓展功能及业务讲解(三)
- Linux和Windows下:Python Crypto模块安装方式区别
- Python 3 加密简介(python des加密解密)
- 怎样从零开始编译一个魔兽世界开源服务端Windows
- 附1-Conda部署安装及基本使用(conda安装教程)
- 如何配置全世界最小的 MySQL 服务器
- 如何使用Github Action来自动化编译PolarDB-PG数据库
- 面向NDK开发者的Android 7.0变更(ndk android.mk)
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)