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

2020-1-6-js新特性第一部分

时间:2024-03-22 16:55:05浏览次数:24  
标签:... console log 特性 js item 2020 var let

var、let、const的区别,对象被定义为常量不受保护,自执行函数注意事项,箭头函数特点,对象扩展运算和对象解构运算,label语句,for...in...和for...of...的区别

var、let、const的区别

var let const
作用域 函数 花括号内 全局
是否可重复声明 可以 不可以 不可以
声明后是否可修改
是否属于window

对象被定义为常量不受保护

const a={"key":"value"}
a.key="abc"
const b=["a","b","c"]
b.push

该代码执行不会报错


七种基本数据类型

布尔值、null、undefined、数字、任意精度整数、字符串、代表


自执行函数注意事项

var name="zhang";//必须要加这个分号,不然后面自执行函数报错
(function(){
	console.log(name)
})()

箭头函数特点

没有原型属性,没有this,不可用作构造函数,所以箭头函数继承封闭范围内的this值

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <button>buttons</button>
</body>
<script>
    window.onload = function() {
        let userName = "zhang";
        var btn = document.getElementsByTagName("button")[0];
        btn.onclick = function() {
            (function() {
                console.log(this)//window
            })();
            //该函数有自己的this,指向window
            
            (() => {
                console.log(this)//button
            })()
            //该函数无自己的this,指向上一层对象
        }
    }
</script>

</html>

this的区分

let username="zhang"
let user={
	username:"huan",
	say(){
		console.log(username)//zhang
		console.log(this.username)//huan
		setTimeout(function(){
			console.log(this.username)//undefined
		},1000)
		setTimeout(()=>{
			console.log(this.username)//huan
		},2000)
	}
	user.say()
}

对象扩展运算和对象解构运算

扩展:在不改变原对象的前提下,生成一个新对象继承原对象,并新增属性

解构:在不改变原对象的前提下,将原对象的属性复制出来

window.onload = function() {
        var obj = {
            a: 00,
            b: 123
        }
        var ext = {
            ...obj,
            c: 20
        }
        console.log(ext)//Object{a:0,b:123,c:20}
		//扩展
    
        var props = {
            "color": "red",
            "lineheight": 1.5,
            "fontsize": "12px"
        }
        var {
            color,
            lineheight
        } = props
        console.log(color, lineheight)//red 1.5
    	//解构

    }

label语句

对循环进行标记,便于指定breakcontinue的循环对象

//停止外层循环
window.onload = function() {
        var num = 0
        outter:
        for (var i = 0; i < 10; i++) {
                inner: 
            	for (var j = 0; j < 10; j++) {

                    if (i == 5 && j == 5) {
                        break outter;
                    }
                    num++;
                }
            }
        console.log(num)//55

    }
//停止内层循环
window.onload = function() {
        var num = 0
        outter:
        for (var i = 0; i < 10; i++) {
                inner:
            	for (var j = 0; j < 10; j++) {

                    if (i == 5 && j == 5) {
                        break inner;
                    }
                    num++;
                }
            }
        console.log(num)//95

    }
//不使用label标记,则停止内层循环
window.onload = function() {
        var num = 0
        for (var i = 0; i < 10; i++) {

            	for (var j = 0; j < 10; j++) {

                    if (i == 5 && j == 5) {
                        break;
                    }
                    num++;
                }
                
            }
        console.log(num)//95

    }

for...in...和for...of...的区别

1前者适用范围更广;后者仅适用arraymapset等的可迭代,不适用object

2前者既可以迭代对象的key,又能迭代对象的value;后者只可迭代出对象的value

window.onload = function() {
    	//for...in...
        let obj = {
            "firstname": "huan",
            "lastname": "zhang"
        }
        for (var item in obj) {
            console.log(item,obj[item])//firstname huan,lastname zhang
        }
    
        let ar = ["a", "b", "c"]
        for (var item in ar) {
            console.log(item, ar[item])//0 a,1 b,2 c
        }

    }
window.onload = function() {
    	//for...of...
    	let ar = ["a", "b", "c"]
        for (var item of ar) {
            console.log(item)//a,b,c
        }
        let obj = {
            "firstname": "huan",
            "lastname": "zhang"
        }
        for (var item of obj) {
            console.log(item)//此处报错,TypeError:obj is not iterable
        }
        

    }

数组的some方法

遍历数组中每个元素,判断其是否满足指定函数的指定条件,返回true或者false

let arr=[1,2,20,13,22]
arr.list.some((item,index,array)=>{
	//item 当前元素
	//index 当前元素下标
	//array 当前数组
	//1.如果一个元素满足条件,返回true,且后面的元素不再被检测
	//2.所有元素都不满足条件,则返回false
	//3.不会改变原始数组
	//4.不会对空数组进行检测;数组为空的话,直接返回false
	if(item>18){
		return true
	}
})

数组的filter方法

遍历数组中每个元素,更加其内部条件,返回一个新数组

let arr=[1,5,51,6,8]
let new_arr=arr.filter(item=>{
	if(item>2){
		return item
	}
})
console.log(new_arr)//(4) [5, 51, 6, 8]

标签:...,console,log,特性,js,item,2020,var,let
From: https://www.cnblogs.com/sylvesterzhang/p/18089838

相关文章

  • 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......
  • 【附源码】Node.js毕业设计高校后勤管理系统(Express)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在当今信息化时代,高校后勤管理作为学校日常运营的重要组成部分,承担着保障校园环境、维护学生生活和教学秩序的重要职责。随着教育体系的不断壮大,传统的人工......