JavaScript回调函数及数组方法测试

简介: JavaScript回调函数及数组方法测试

JavaScript回调函数及数组方法测试


具体代码如下:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="GBK">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript回调函数、数组知识点</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <script type="text/javascript">
        function callback() {
            console.log("callback function");
        }
        function B(msg, callback) {
            callback();
            console.log("B main function");
        }
        var person = new Object();
        person = {name:"Jack",age:17,"height":199.3};
        var arr = new Array("blue", "green", "red");
        arr[arr.length] = "yellow";
        arr[arr.length] = "pink";
        var arr2 = ["car", "city", "computer"];
        //数组可以作为栈(先进后出FILO)用,使用push方法添加元素,pop方法弹出最后一个元素并返回该值
        var arr3 = new Array();
        arr3.push("lenovo");
        arr3.push("dell");
        var item = arr3.pop();//返回弹出的最后项的值dell
        /*
        数组可以作为队列(先进先出FIFO)用,使用push方法添加元素,shift方法移除数组的第一项并返回该值
        unshift方法可以在数组前端新增任意个项并返回新数组的长度
        */
        var arr4 = new Array();
        arr4.push("acer");
        arr4.push("xiaomi");
        var itme = arr4.shift();//item:acer
        var count = arr4.unshift("huawei","asus");//新数组:huawei asus xiaomi
        //用 prototype 属性为对象的类提供一组基本功能。 对象的新的实例“继承”了赋予该对象的原型的行为。
        var testEmail = "324234@qq.com";
        String.prototype.isEmail = function () {//邮箱判断
            return testEmail.includes("@");
        }
        /*
        数组concat方法(基于当前数组创建一个新数组)与slice(基于当前数组的一个或多个项创建数组,接受1个或2个参数)方法
        slice(n)返回索引n到数组末尾的片段
        slice(n,m)返回索引n到m-1的数组片段,不包括索引m处的元素
        */
        var arr5 = new Array("a1","a2");
        var arr6 = arr5.concat("b1","b2");//concat:创建当前数组的副本,然后在副本末尾连接上新值,返回拼接的新数组
        var t = arr6.slice(0,1);//返回arr6索引值0到0的元素
        var t2 = arr6.slice(1,3);//返回arr6索引值1到2的元素,不包括索引3
        console.log("arr5: " + arr5);//a1 a2
        console.log("arr6: " + arr6);//a1 a2 b1 b2
        console.log("arr6.slice(0,1): " + t);//a1
        console.log("arr6.slice(1,3): " + t2);//a2 b1
        /*
        数组的位置方法
        indexOf(n)从数组开头(索引0)处开始查找n所在的位置,返回n对应的索引值,找不到返回-1
        lastIndexOf(n)从数组末尾(索引arr.length-1)处开始查找n所在的位置,返回n对应的索引值,找不到返回-1
        */
        console.log("arr6.indexOf(\"b1\"): " + arr6.indexOf("b1"));//2
        console.log("arr6.lastIndexOf(\"a2\"): " + arr6.lastIndexOf("a2"));//1
        console.log("arr6.lastIndexOf(\"a3\"): " + arr6.lastIndexOf("a3"));//-1
        /*
        数组的5个迭代方法
        1、every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true;
        2、filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组;
        3、forEach():对数组中的每一项运行给定函数。该方法无返回值;
        4、map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组;
        5、some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
        以上方法都不会修改数组中包含的值。
        every()方法和some()方法很像,区别就是every()方法需要每项都返回true才能返回true,some()方法
        只要有一项运行函数返回true,则返回true。
        */
        var numbers = [0,2,-9,12,200,5,-8];
        var everyResult = numbers.every(function(value, index, array) {
            return (value > 0);//判断每项是否都大于0
        })
        console.log("everyResult: " + everyResult);//everyResult: false
        var filterResult = numbers.filter(function(value, index, array) {
            return (value > 0);//过滤出大于0的元素
        })
        console.log("filterResult: " + filterResult);//filterResult: 2,12,200,5
        numbers.forEach(function(value, index, array) {
            console.log("numbers's element is " + value);//遍历输出数组元素
        })
        var mapResults = numbers.map(function(value, index, array) {
            return (value * 3);//数组元素每项*3
        })
        console.log("mapResults: " + mapResults);//mapResults: 0,6,-27,36,600,15,-24
        var someResults = numbers.some(function(value, index, array) {
            return (value > 0);//是否存在大于0的项
        })
        console.log("someResults: " + someResults);
        $(document).ready(function() {
            B("HELLO",callback);//回调函数的引用作为入参,并在函数中调用回调函数
            console.log(person.name + " is " + person.age + " years old" + "height is " + person.height);
            console.log(typeof person.name);
            console.log(typeof person.age);
            console.log(typeof person.height);
            console.log(typeof person["height"]);
            //遍历数组
            arr.forEach(function(key) {
                console.log(key + "-");
            });
            $.each(arr,function(key,value) {
                console.log(key + "~" + value);
            });
            for (var i in arr) {
                console.log(arr[i] + "#");
            }
            //邮箱验证
            console.log("email check result is " + testEmail.isEmail())
        });
    </script>
</body>
</html>


控制台结果:


arr5: a1,a2
arr6: a1,a2,b1,b2
arr6.slice(0,1): a1
arr6.slice(1,3): a2,b1
arr6.indexOf("b1"): 2
arr6.lastIndexOf("a2"): 1
arr6.lastIndexOf("a3"): -1
everyResult: false
filterResult: 2,12,200,5
numbers's element is 0
numbers's element is 2
numbers's element is -9
numbers's element is 12
numbers's element is 200
numbers's element is 5
numbers's element is -8
mapResults: 0,6,-27,36,600,15,-24
someResults: true
callback function
B main function
Jack is 17 years oldheight is 199.3
string
number
number
number
blue-
green-
red-
yellow-
pink-
0~blue
1~green
2~red
3~yellow
4~pink
blue#
green#
red#
yellow#
pink#
email check result is true
相关文章
|
3天前
|
JavaScript 前端开发
JavaScript 数组方法概览
JavaScript 数组方法概览:push() 添加元素至末尾;pop() 删除并返回最后一个元素;shift() 删除并返回第一个元素;unshift() 向开头添加元素;slice() 返回指定范围的浅拷贝;splice() 删除/替换/添加元素,改变原数组;concat() 合并数组;join() 转换为字符串;reverse() 颠倒顺序;sort() 排序;map() 应用函数并创建新数组;filter() 过滤元素;reduce() 累加元素为单一值。
8 1
|
4天前
|
JavaScript 前端开发 UED
在 JavaScript 中,异步编程和回调函数是处理非阻塞操作(如网络请求、文件读写等)的重要工具
【5月更文挑战第10天】JavaScript中的异步编程和回调函数用于处理非阻塞操作,提高应用响应性和吞吐量。异步编程通过回调函数、Promises和async/await等方式实现,避免程序因等待操作完成而阻塞。回调函数是异步操作完成后调用的函数,常用于处理网络请求等。然而,回调函数存在嵌套问题和错误处理困难,因此出现了Promises和async/await等更优解决方案。
10 3
|
6天前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
29 10
|
3天前
|
JavaScript 前端开发
JavaScript 的数组方法 map()、filter() 和 reduce() 提供了函数式编程处理元素的方式
【5月更文挑战第11天】JavaScript 的数组方法 map()、filter() 和 reduce() 提供了函数式编程处理元素的方式。map() 用于创建新数组,其中元素是原数组元素经过指定函数转换后的结果;filter() 则筛选出通过特定条件的元素生成新数组;reduce() 将数组元素累计为单一值。这三个方法使代码更简洁易读,例如:map() 可用于数组元素乘以 2,filter() 用于选取偶数,reduce() 计算数组元素之和。
8 2
|
4天前
|
前端开发 JavaScript 开发者
在JavaScript中,回调函数是一种非常强大的工具
【5月更文挑战第10天】JavaScript中的回调函数是异步编程的核心,常用于处理异步操作结果、事件监听、定时任务、数组遍历和转换以及递归调用。例如,`fetchData`函数使用回调处理网络请求的结果,`addEventListener`用于监听事件,`setTimeout`执行延迟任务,`map`则对数组元素进行操作。尽管回调函数可能导致回调地狱和错误处理复杂,但它们依然是理解和掌握JavaScript的关键技能,而Promise和async/await提供了更优的异步解决方案。
9 2
|
5天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
8 0
|
7天前
|
存储 JavaScript 前端开发
JavaScript 数组方法详解
JavaScript 数组方法详解
15 2
|
19天前
|
前端开发 JavaScript
在JavaScript中,回调函数、Promise和async/await这三种异步处理机制的优缺点
JavaScript的异步处理包括回调函数、Promise和async/await。回调函数简单易懂,但可能导致回调地狱和错误处理困难。Promise通过链式调用改善了这一情况,但仍有回调函数需求和学习成本。async/await提供同步风格代码,增强可读性和错误处理,但需ES8支持,不适用于并发执行。根据项目需求选择合适机制。
|
2月前
|
JavaScript
JS回调函数
JS回调函数
9 0
|
2月前
|
存储 JavaScript 前端开发
js开发:请解释什么是回调函数(callback function),并给出一个示例。
回调函数是JavaScript中处理异步编程的一种常见模式,常用于事件驱动和I/O操作。它们作为参数传递给其他函数,在特定条件满足或任务完成后被调用。例如,`asyncOperation`函数接受回调函数`handleResult`,在模拟的异步操作完成后,调用`handleResult`并传递结果。这使得程序员能在操作完成后执行后续任务。
22 1