最全的—— ES6有哪些新特性?
ES6新特性1、let和const前面讲过:https://blog.csdn.net/ZLJ_999/article/details/123960186
2、symbolSymbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值,不能与其他数据类型进行运算。它是JavaScript中的第七种数据类型,与undefined、null、Number(数值)、String(字符串)、Boolean(布尔值)、Object(对象)并列。
你可以这样创建一个Symbol值:
const a = Symbol();
console.log(a); //Symbol()
//因为Symbol是基本数据类型,而不是对象,不能 new 。
const a = new Symbol();//报错,Symbol is not a constructor
使用Symbol()创建一个Symbol类型的值并赋值给a变量后,你就得到了一个在内存中独一无二的值。现在除了通过变量a,任何人在任何作用域内都无法重新创建出这个值
const a = Symbol();
const b = Symbo ...
前端——谈谈js对象的深复制与浅复制
若本文对你有帮助 – 请点个赞或者关注吧
1、引用赋值——浅复制
缺点:改变复制的对象时,原对象也改变(实际是同一对象)
var obj1={
name:"admin",
age:100
}
var obj2=obj1 //只是把obj1指向堆内存的地址赋值给obj2
obj2.name = 'zlj'
console.log(obj1,obj2);
直接赋值时,obj1只是把指向堆内存的地址赋值给obj2,指向的还是同一个对象,因此改变obj2.name时,实际上改变的也是obj1
2、es6 …扩展符 —— 深复制(有缺陷)
优点:这种复制方式不会改变原对象
var obj1={
name:"admin",
age:100
}
var obj2={...obj1}
obj2.name = 'zlj'
//当我们改变obj2.name时,obj1没有被改变
console.log(obj1,obj2);
缺点:当对象里面在嵌套一个对象时,对内部对象的复制是浅复制
var obj1={
name:"admin",
...
React创建项目报错:You are running `create-react-app` 5.0.0, which is behind the latest release (5.0.1).
使用React脚手架创建项目,报错:create-react-app app2
如果您之前已create-react-app通过 全局安装npm install -g create-react-app
意思是有新版本了,之前安装的版本低了
1.可以先卸载npm uninstall -g create-react-app
2.然后再使用npx临时安装:npx create-react-app my-app
3.如果还不行就加上版本号npx create-react-app@5.0.1 yourApp
react跨域 http-proxy-middleware 无效还是404
问题描述:
今天用http-proxy-middleware的过程中,setupProxy.js文件配置好以后发出请求依然无效还是404
setupProxy.js文件
const { createProxyMiddleware } = require("http-proxy-middleware");
module.exports = function (app) {
console.log(app);
app.use(
"/ajax",
createProxyMiddleware({
target: "https://i.maoyan.com",
changeOrigin: true,
})
);
};
请求axios({
method: "get",
url: "/ajax/comingList?ci=236&limit=10&movieIds=&token=&optimus_uuid=53D982E0BB3411EC8ECD334B3F83289E1602AC03A72F45D3 ...
React创建项目出现ReactDOM.render is no longer supported in React 18警告,index.js修改
当你第一次安装 React 18 时,你会在控制台中看到一个警告:因为在 React 18 中,ReactDOM.render 被废弃,当前发出警告,并以兼容模式运行。只需要更改index.js文件即可 改成下面这样警告就会消失:
import ReactDOM from "react-dom/client";
import App from "./App";
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(<App />);
废弃的方法还有很多
react-dom:ReactDOM.render已弃用。使用它会警告并在 React 17 模式下运行您的应用程序。
react-dom:ReactDOM.hydrate已弃用。使用它会警告并在 React 17 模式下运行您的应用程序。
react-dom:ReactDOM.unmountComponentAtNode已弃用。
react-dom:ReactDOM.renderSubtreeIntoCon ...
我的JavaScript笔记——四、IIFE
一、IIFEIIFE 全称:Immediately-Invoked Function Expression (立即调用函数表达式),别名:匿名函数自调用。作用:
隐藏内部实现
不会污染外部(全局)命名空间
用它来编码js模块
<script>
(function(){ //匿名函数自调用
var a = 3;
console.log(a+3);
})();
var a = 4;
console.log(a);
(function(){
var a = 1;
function test(){
console.log(++a);
}
window.$ = function(){ //向外暴露一个全局函数
return{
test:test
}
};
})();
...
我的JavaScript笔记——三、事件对象event和 this关键字
一、事件对象event1.1 什么是事件对象?
Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
上面是官方说法,简单的说就是当你触发了一个事件以后,event对象存放了对该事件的一些描述信息。
列如:
var box = document.querySelector('.box')
box.onclick = function fn1(event){
console.log(event.x) // 返回鼠标所点击位置的 X轴坐标点信息
console.log(event.y) // 返回鼠标所点击位置的 Y轴坐标点信息
}
这是鼠标点击事件 其实还存放了点击时相对浏览器窗口的坐标以及相对整个页面的坐标等等。
如果是 键盘事件 哪个键被摁下也会在event对象中如果是 鼠标滚轮事件 滚轮滑动距离也event对象中
二、this 关键字
在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。this会变化就是它麻烦的原因
首先声明thi ...
我的JavaScript笔记——二、事件的冒泡和捕获(重点)及如何取消冒泡
二、事件的冒泡和捕获(重点)1.什么是事件?
简单来说:就是用户与浏览器窗口发生交互的过程。列如:鼠标点击、鼠标滑入滑出、滚轮、键盘输入……
2.事件的冒泡以烂大街的点击事件为例(代码简单就不写了看着也烦)
2.1 什么是事件冒泡?
即当发生事件时,由最内部的元素接收,然后逐级向上传播。
看上图当我们点击 a 时a 会先响应并触发点击事件然后 p 响应并触发点击事件然后是 li => ul => body => html 逐级向上这个过程就是事件的冒泡
2.2 什么是事件捕获?
即当发生事件时,由最外部的元素接收,然后逐级向下传播。
捕获就是冒泡相反当我们点击 a 时最外层的 html 会先响应并触发点击事件然后 body 响应并触发点击事件然后是 ul => li => p => a 逐级向下这个过程就是事件的捕获
2.3 如何取消冒泡呢?浏览器默认情况下是会冒泡的,当我们需要取消时,
方法一: 在定义的事件回调函数的后面加上 return false
a.onclick = function(){
alert('a被点击了');
r ...
我的JavaScript笔记—— 一、var、let、const的区别?
什么是JavaScript?首先,ECMAScript 和 JavaScript 什么关系?
ECMAScript是一个国际通过的标准化脚本语言。
JavaScript由ECMAScript和DOM、BOM三者组成。 可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。
一、var、let、const的区别1. var声明变量存在变量提升,let和const不存在变量提升console.log(a); // undefined ===> a已声明还没赋值,默认得到undefined值
console.log(b); // 报错:b is not defined ===> 找不到b这个变量
console.log(c); // 报错:c is not defined ===> 找不到c这个变量
var a = 100;
let b = 10;
const c = 10;
console.log(a);//a=100
2. let和const只能在块作用域里访问if(1){
...
前端初学者node会这些就可以了 Nodejs入门
Nodejs一、Nodejs介绍与安装
介绍:
Node 是一个让 JavaScript 运行在服务端的开发平台。
简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
总而言之:Node.js是可以脱离浏览器环境运行的JavaScript程序,且基于V8 引擎下载地址: http://nodejs.cn/安装:默认安装,无脑下一步查看是否安装成功:
node -v
再命令行执行命令,如果出现版本号即为安装成功
二、Nodejs入门1.运行的JavaScript程序1、创建 helloworld.js
console.log('Hello World!!!')
2、命令行执行命令
node helloworld.js
运行结果:hello world!!
2.Node安装依赖包命令:
npm install 依赖包名
示例 ...