JavaScript

本文深入讲解JavaScript中的嵌套函数、递归函数、内置函数等核心概念,并提供了详细的代码示例,帮助读者理解如何使用这些函数解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript

函数

一、嵌套函数

嵌套函数,就是在一个函数的内部定义另外一个函数。不过在内部定义的函数只能在内部调用,如果在外部调用,就会出错。

二、递归函数

递归函数用于让一个函数从其内部调用其本身。不过需要注意的是,如果递归函数处理不当,就会使程序陷入“死循环”。为了防止“死循环”的出现,可以设计一个做自加运算的变量,用于记录函数自身调用的次数,如果次数太多就让它自动退出循环。

function 递归函数名(参数1)
{
    递归函数名(参数2)
}

在定义递归函数时,需要2个必要条件:

(1)首先包括一个结束递归的条件;

(2)其次包括一个递归调用的语句;

三、内置函数
eval()函数简介

在JavaScript中,eval()函数可以把一个字符串当做一个JavaScript表达式一样去执行它。

string表示一个字符串,是eval()函数必选参数。eval()函数是有返回值的,如果参数字符串是一个表达式,就会返回表达式的值。如果参数字符串不是表达式,也就是没有值,那么就会返回“undefined”

<script type="text/javascript">
        eval("x=10;y=20;document.write(x*y)");
        //输出200
    </script>
isFinite()函数简介

在JavaScript中,isFinite()函数用来确定某一个数是否是一个有限数值。

document.write(isFinite(123));   //true
isNaN()函数简介

在JavaScript中使用isNaN()函数来判断一个值是否是NaN值。如果该值为非数字值或NaN值,返回true,否则返回false。

那什么叫NaN值呢?啊,很简单:

NaN = “Not a Number”(非数字值)

顾名而思义,现在大家都懂了什么叫NaN值吧。其实数字型数据(整型或浮点型)就不是NaN值,而非数字型(如字符串)就是NaN值。

       document.write(isNaN(123));      //false
        document.write(isNaN("123"));    //false
        document.write(isNaN("123jj"));   //true
parseInt()函数

parseInt()函数主要将首位为数字的字符串转化为数字。如果字符串不是以数字开头,则将返回NaN。(并且是int型)

     document.write(parseInt("12kkk"));     //12
        document.write(parseInt("g12kkk"));   //NaN
        document.write(parseInt(12.56));     //12
parseFloat()函数

parseFloat()函数主要将首位为数字的字符串转化为浮点型数字。如果字符串不是以数字开头,将返回NaN。

字符串对象String

转换类
toUpperCase()

把字符串转换成大写

 var str = "hujiang";
        document.write(str.toUpperCase());   //HUJIANG
tolowerCase()

把字符串转换成小写

查找类
indexOf()

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

 var str = "hujiang shuaige";
        document.write(str.indexOf("hu")+"<br/>");   //0
lastIndexOf()

indexOf() 方法可返回某个指定的字符串值在字符串中最后出现的位置。

        var str = "hujiang shuaige";
        document.write(str.lastIndexOf("hu")+"<br/>");   //9
charAt()

获取字符串中指定位置的字符

var str = "hujiang";
        document.write(str.charAt(0));    //h
截取类
substring()

substring()方法来提取字符串中的某一部分字符串。

字符串.substring(开始位置,结束位置)
var str1="hujiangdd";
        var str2=str1.substring(3,5);
        document.write(str2);     //ia
substr()

substr() 的参数指定的是子串的开始位置和长度

var str="Hello world!"
document.write(str.substr(3))       //lo world!
document.write(str.substr(3,7))     //lo worl
组合类(和正则表达式组合使用)
split()

把字符串按指定字符分割成数组

字符串.split(分割符)
 var str ="I love hujiang";
        var arr=new Array();
        arr=str.split(" ");
        console.log(arr);   //["I", "love", "hujiang"]
replace()

replace()方法常常用于在字符串中用一些字符替换另一些字符,或者替换一个与正则表达式匹配的子串。

strObject.replace(原字符,替换字符)    
strObject.replace(正则表达式,替换字符)  //匹配正则表达式
  var str ="I love javascript!";
        var str_new=str.replace("javascript","hujiang");
        document.write(str_new);      //I love hujiang!
match()

match()方法可以从字符串内检索指定的值,或者找到一个或多个正则表达式的匹配.有,则返回该值。无,则返回null

         var str="Hello World!";
        document.write(str.match("world")+"<br/>");   //null
        document.write(str.match("World")+"<br/>");   //World

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。有,则返回该值索引。无,则返回-1

         var str = "hujiang shuaige";
        document.write(str.search("ge")+"<br/>");    //13
        document.write(str.search("hh"));            //-1
连接类
concat()

可以使用concat()方法来连接2个或多个字符串。返回新的字符串

字符串1.concat(字符串2,字符串3,…,字符串n);
var str1="hu";
        var str2="jiang";
        var str3="dd";
        var str=str1.concat(str2,str3);
        document.write(str);       //hujiangdd

Array对象

slice()获取数组中的某段数组元素
unshift()在数组开头添加元素
push()在数组末尾添加元素
shift()删除数组中第一个元素
pop()删除数组最后一个元素
toString()将数组转换为字符串
join()将数组元素连接成字符串
concat()多个数组连接为字符串
sort()数组元素正向排序
reverse()数组元素反向排序

栈方法

push()

push()方法是在数组的末尾添加元素,并且返回新数组的长度

var arr=new Array("hu","hh");
        console.log(arr.push("jQ", "Aj"));   //4
        console.log(arr);          //["hu", "hh", "jQ", "Aj"]

pop()

pop()方法删除并返回数组中的最后一个元素,并且返回最后一个元的值

 <script type="text/javascript">
        var arr=new Array("hu","hh");
        console.log(arr.pop());          //hh
    </script>

队列方法

unshift()

unshift()方法在数组开头添加元素,并且返回新数组的长度

 var arr=new Array("hu","hh");
        console.log(arr.unshift("jQ", "Aj"));    //4
        console.log(arr);     //["jQ", "Aj", "hu", "hh"]

shift()

shift()方法来删除数组中第一个元素,并且返回第一个元素的值。

       var arr=new Array("hu","hh");
        console.log(arr.shift());    //hu

排序方法

sort()

sort()方法对数组元素进行大小比较排序。

        //升序比较函数
        function asc(a,b)
        {
            return a-b;       //根据返回数值的正负进行排序
        }
        //降序比较函数
        function des(a,b)
        {
            return b-a;
        }
       var arr=new Array(3,9,1,12,50,21);
        arr.sort(asc);
        document.write("升序后的数组元素"+arr.join(","));
        document.write("<br/>");
        arr.sort(des);
        document.write("降序后的数组元素"+arr.join(","));

reverse()

reverse()方法将数组中的元素反向排列。注意,reverse()是一种“排列”方法,而不是“排序”方法。

 var arr1= new Array("html","css","javascript");
   console.log(arr1.reverse());
        //["javascript", "css", "html"]

操作方法

concat()

concat()方法连接两个或多个数组。该方法不会改变现有的数值,而仅仅会返回被连接数组的一个副本。

 var arr1=new Array("hu","hh");
  var arr2 = new Array("html","css","javascript");
   console.log(arr1.concat(arr2));   
   //["hu", "hh", "html", "css", "javascript"]

slice()

slice()方法来获取数组中的某段数组元素。该方法不会改变原始数组。

数组对象.slice(start,end)
var arr=new Array("hu","hh","jj","jiang","ji");
        console.log(arr.slice(1,3));   //["hh", "jj"]

join()

join()方法把数组中的所有元素连接成为一个字符串

       var arr=new Array("hu","hh");
       console.log(arr.join(','));    //hu,hh

splice()

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。

var arr = new Array(6)
        arr[0] = "George"
        arr[1] = "John"
        arr[2] = "Thomas"
        arr[3] = "James"
        arr[4] = "Adrew"
        arr[5] = "Martin"

        document.write(arr + "<br />")  //George,John,Thomas,James,Adrew,Martin

        //在index 为2 的位置添加一个元素:
        arr.splice(2,0,"William")
        document.write(arr + "<br />")  //George,John,William,Thomas,James,Adrew,Martin

        //删除位于 index 2 的元素,并添加一个新元素来替代被删除的元素
        arr.splice(2,1,"Jilliam")
        document.write(arr + "<br />")  //George,John,Jilliam,Thomas,James,Adrew,Martin

        //将删除从 index 2 开始的三个元素,并添加一个新元素来替代被删除的元素
        arr.splice(2,3,"William")    
        document.write(arr)        //George,John,William,Adrew,Martin

查找方法

indexOf()

lastIndexOf()

迭代方法

every()

filter()

forEach()

map()

some()

Math对象的方法

ceil(x)对数进行上舍入
floor(x)对数进行下舍入
round(x)把数四舍五入为最接近的整数
min(x,y)返回x和y中的最小值
random()返回0~1之间的随机数
abs()求一个数的绝对值
document.write( Math.ceil(0.4) );     //1
document.write( Math.ceil(0.6));      //1

document.write(Math.floor(0.6) );      //0
 document.write( Math.floor(-1.1) );    //-2
var num=Math.floor(Math.random()*10+1);  //返回1到10的随机数
var num=Math.floor(Math.random()*9+2);   //返回2到10的随机数

事件

JavaScript鼠标事件
onclick鼠标单击事件
ondbclick鼠标双击事件
onmouseover鼠标移入事件
onmouseout鼠标移出事件
onmousemove鼠标移动事件
onmousedown鼠标按下事件
onmouseup鼠标松开事件
        var btn = document.getElementById("btn");
        var e = document.getElementById("hj");
        btn.onmousedown = function () {
            e.style.color = "red";
        }
        btn.onmouseup = function () {
            e.style.color = "black";
        }
JavaScript键盘事件

onkeypress事件

onkeypress事件是在键盘上的某个键被按下到松开整个过程中触发的事件

onkeydown事件

键盘的按键被按下时触发

onkeyup事件

onkeyup事件是在键盘的某个键被按下之后松开的一瞬间触发的事件

JavaScript表单事件

onfocus/onblur

onfocus表示获取焦点触发的事件,onblur表示失去焦点触发的事件

具有获得焦点和失去焦点事件的元素有3个:

  • (1)单行文本框text;

  • (2)多行文本框textarea;

  • (3)下拉列表select;

onchange事件

用户在单行文本框text和多行文本框textarea输入文本时,由于文本框内字符串的改变将会触发onchange事件。此外,在下拉列表select中一个选项的状态改变后也会触发onchange事

具有获得onchange事件的元素有3个:

  • (1)单行文本框text;
  • (2)多行文本框textarea;
  • (3)下拉列表select;

onselect事件

在JavaScript中,当用户选中单行文本框text或多行文本框textarea的文本时,会触发onselect事件。onselect事件的具体过程是从鼠标按键被按下,到鼠标开始移动并选中内容的过程。这个过程并不包括鼠标键的放开。

<textarea id="txt" rows="5" cols="20"></textarea><br />
    输入字符长度为:<span id="num"></span>
    <script type="text/javascript">
        var e = document.getElementById("txt");
        var n = document.getElementById("num");
        e.onchange = function () {
            var len = e.value.length;
            n.innerText = len;
        }
    </script>
JavaScript页面相关事件

onload(加载事件)

window.onload=function(){
    ……
}

onresize(页面大小事件);

对于页面大小改变的事件我们用的是onresize。这个事件常用于固定浏览器的大小

onerror(出错事件);

当文档或图像加载过程中发生错误时就会触发onerror事件。

其他事件

onscroll 事件:滚动条发生滚动时触发

window.onscroll = function () {
                var scrollTop =   document.documentElement.scrollTop || document.body.scrollTop;
                if (scrollTop > 200) {
                    show(oTop);
                } else if (scrollTop <= 200) {
                    hide(oTop);
                }
            };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值