首页 > 其他分享 >2020-1-9-js新特性第二部分

2020-1-9-js新特性第二部分

时间:2024-03-22 16:55:46浏览次数:20  
标签:function console 函数 对象 特性 js 2020 arguments log

实现map函数、嵌套函数和闭包、arguments对象、函数参数、关系操作符、遍历数组foreach方法、map对象与object对象的区别、promise对象、生成器

实现Map函数

传入处理函数和数组,返回值为将数组内的数按照函数规则处理后新生成的数组

window.onload = function() {
        function map(f, ar) {
            var res = [],
                i
            for (i = 0; i < ar.length; i++) {
                res.push(f(ar[i]))
            }
            return res
        }
        //定义map函数
    
        ar = [1, 2, 3]
        function f(a) {
            return a * a
        }
        result = map(f, ar)
        console.log(result)//Array[3] [1,4,9]

    }

嵌套函数和闭包

嵌套函数是指在一个函数内部,再定义另一个函数。闭包是指拥有独立环境与变量的表达式(函数)。

特点:

1内部函数只能通过外部函数层级调用

2内部函数可以访问外部函数的参数和变量,但外部函数不可访问内部函数的参数和变量


arguments对象

函数的实参会保存在arguments对象中

window.onload=function(){
    function go(a,b,c){
        console.log(arguments)
        //Arguments { 0: "first", 1: "second", 2: "third", … }
        
        console.log(arguments.length)//3
        for(item in arguments){
            console.log(arguments[item])
        }
        //first
        //second
        //third
    }
    go("first","second","third")
}

函数参数

1函数参数的默认值是undifined

2不确定传入的参数个数,参数可以用...args表示,在函数中将会得到一个名为args的数组


关系操作符

in判断某个对象是否存在这个属性

instanceof判断某个对象是否属于某个类型


遍历数组的foreach方法

数组自带一个foreach方法,传入一个处理函数便能实现对数组的遍历

var colors = ['red', 'green', 'blue'];
colors.forEach(function(color) {
  console.log(color);
});
//red
//green
//blue

Map对象和Object对象的区别

Map对象 Object对象
任意值 键只能是字符串或Symbol
size属性直接获取键值对个数 无法直接获取键值对个数
可直接迭代 无法直接迭代

Promise对象

三种状态:Pending,Resolved,Rejected

window.onload=function(){
    
    const p = function(){
        let num = Math.random();
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                num > 0.5 ? resolve(num) : reject(num);
                }, 1000);
            })
    };
    p().then( (data)=>{console.log("success",data)},(error)=>{console.log("failure",error)})
    //success 0.7462217733600771
    //failure 0.003417836372593297

}

生成器

function* makeRangeIterator(start = 0, end = Infinity, step = 1) {
        for (let i = start; i < end; i += step) {
            yield i;
        }
    }
    var a = makeRangeIterator(1,10,2)
    console.log(a.next())
    console.log(a.next())
    console.log(a.next())

模块暴露

//定义一个模块abc.js,暴露变量供外部使用
let info={
	name:"zhanghuan"
}
export default info
//一个模块中只可有一个default

export var title="过眼奇峰云已夏,关心暑雨麦方秋。"
export var title2="有志竟能成耿弇,诸艰偏欲试张纲。"
//一个模块中可有多个var
import info1, { title1 } from './abc.js'; //导入default暴露的变量,外部可以用任意变量名接收
console.log(info1.name)//zhanghuan

import {title,title2} from './abc.js'
console.log(title,title2)//过眼奇峰云已夏,关心暑雨麦方秋。 有志竟能成耿弇,诸艰偏欲试张纲。

标签:function,console,函数,对象,特性,js,2020,arguments,log
From: https://www.cnblogs.com/sylvesterzhang/p/18089839

相关文章

  • 2020-1-6-js新特性第一部分
    var、let、const的区别,对象被定义为常量不受保护,自执行函数注意事项,箭头函数特点,对象扩展运算和对象解构运算,label语句,for...in...和for...of...的区别var、let、const的区别varletconst作用域函数花括号内全局是否可重复声明可以不可以不可以声明后是......
  • C++11新特性
    1、成员变量默认初始化:构建一个类的对象不需要用构造函数初始化成员变量。2、auto关键字:用于定义变量,编译器可以自动判断的类型(前提:定义一个变量时对其进行初始化);3、智能指针;4、空指针:空指针从指向NULL变为指向nullptr;通过将指针初始化为nullptr(nullptr直接代表指针空值类型),可......
  • 宠物医院管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着宠物行业的快速发展和宠物数量的不断增加,宠物医疗服务的需求日益旺盛。宠物医院管理系统作为一种专业的信息化工具,对于提升宠物医院的工作效率、优化顾客服......
  • 房屋中介房源管理系统的设计与实现(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍随着房地产市场的蓬勃发展,房屋中介机构在房源管理和客户服务方面面临着日益增长的挑战。一个高效、可靠的房屋中介房源管理系统对于提升中介机构的工作效率、优......
  • 前端使用StreamSaver.js流式下载大文件
    最近有个需求,要求批量下载腾讯云cos文件,并打包压缩。1.方案一起初用的方案,文件数据一直是以blob方式传递的,小文件可以成功下载,但是遇到大文件(比如几个G)一直等待且不加遮罩层loading的情况下体验效果很差。import{saveAs}from'file-saver';importJSZipfrom'jszip';......
  • Nodejs常用命令及解释
    node-启动Node.js程序解释:使用该命令可以直接运行一个Node.js程序,从而执行其中的JavaScript代码。npm-Node.js包管理器命令解释:npm是Node.js的包管理器,可以用来安装、卸载和管理Node.js包。常用的命令有:npminit-初始化一个新的Node.js项目npminsta......
  • Three.js基础入门介绍——【毕业季】Three.js动态相册
    前言岁月匆匆,又是一年毕业季,这次做个动态相册展示图片,放些有意思的内容,一起回忆下校园生活吧。预期效果相册展示和点选切换,利用相机旋转和移动来实现一个点击切图平滑过渡的效果。实现流程基本流程1、搭建场景2、放置图片3、鼠标事件4、相机运动工程文件工程......
  • 如何快速上手Vue.js,Vue.js怎么学习,看这篇就够了(全网最牛)
    1、官方文档Vue.js官方文档 是最重要的学习资源,其中包含了详细的教程、示例和API参考,让你快速了解Vue.js的核心概念和用法。2、VueCLI使用VueCLI创建项目是一个快速搭建Vue.js应用的好方法,它提供了一个交互式的界面和现代的开发工具链,让您轻松生成项目结构和......
  • Json泛型化处理
    importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.TypeReference;importjava.util.List;publicclassJSONCommonBuilder{/***Json泛型化处理*/publicstatic<T>BusinessCache<T>getBusinessCache(Objectobject,Clas......
  • js 如何提取富文本里的图片路径
    在JavaScript中,要从富文本内容中提取图片路径,你可以创建一个DOM元素来作为解析富文本内容的容器,然后将富文本内容作为文本节点插入这个容器中。接着,你可以使用querySelectorAll方法和CSS选择器来选择所有的img元素,并获取它们的src属性。以下是一个简单的示例代码functionextra......