JavaScript复习笔记

1、什么是JavaScript

ECMAScript可以理解是JavaScript的一个标准,最新版本是es6版本-
但是大多数浏览器只停留支持es5

2、基本入门

2.1 引入JavaScript

  1. 内部标签
//标签内写js代码
<script>
	// 这里面就可以写js代码
</script>
  1. 外部引入
<script src="js/qj.js"></script>

2.2 基本语法入门

<script>
// 1. 定义变量  变量类型  变量名 = 变量值;
var score = 71;
// 2. 条件控制
if(){
}else {
} 
</script>

// console.log(变量)

2.3 基本数据类型

==变量:==不能用数字开头

number: js不区分小数和整数,统一是Number

123 //整数123
123.1 //浮点数123.1
NaN //not a number 
Infinity //表示无限大

字符串:‘abc’、“abc”

布尔值: true,false

逻辑运算:

&&  //两真,则都是真
||  // 一个为真,则为真
|   // 真即假,假即真

比较运算符: !!重要!

=   
==    等于(类型不一样,值一样,也会判断为true===   绝对等于(类型一样,值一样,结果true

这是一个JS的缺陷,不要使用 == 比较
注:

  • NaN===NaN,这个与所有的数值都不相等,包括自己
  • 可以使用isNaN(NaN)来判断是否相等

浮点数问题:

console.log((1/3) === (1-2/3))
//false

尽量避免使用浮点数进行运算,存在精度问题!

Math.abs(1/3 -(1-2/3)) < 0.00000001
//true

null 和 undefined:

  • null 空
  • undefined 未定义

数组:

Java的数值必须是相同类型的对象,JS中可以不这样

//保证代码的可读性,尽量使用[]
var arr = [1,23,4,5 , "he1lo',nu11 ,true];

new Array1,12,3,4,4,5, 'he1lo');

取数组下标:如果越界了会显示undefined

对象:
对象是大括号,数组是中括号

//Person person = new Person(1,2,3,4,5);
var person = {
name : "xiaohong",
age: 3,
tags: t'js', 'java ' , 'web' ,'...']
}

取对象的值

person.name
> "xiaohong"
person. age
> 3

可以用typeof判断类型

//一、基本数据类型
// 1.number类型
var num = 1;
console.log(typeof num);//返回的是number
// 2.string 类型
var str = '小红';
console.log(typeof str);//返回的是string
//3. boolean类型
var boo = true;
console.log(typeof boo);//返回的是boolean
//4.undefined类型
var a;
console.log(typeof a);//返回的是undefined

//二、复杂数据类型
//1. Array类型
var arr = new Array();
console.log(typeof arr); //返回的是object
// 2.对象
function Person(name){
	this.name =name;
}
var stu = new Person();
console.log(typeof stu); //返回的是object
// 3.function类型
var fn = function(){};
console.log(typeof fn); //返回的是function
// 4.null
var nul = null;
console.log(typeof nul); //返回的是object

// 可以得出:复杂数据类型,如果是对象,则返回的是object,如果的function类型,则返回的是function
// 所以:typeof 可以返回的类型为:number、string、boolean、undefined、object、function

如何判断一个数组是数组类型

//通过isArray判断
var cars = new Array();
cars[0] = 1;
cars[1] = 2;
if(Array.isArray(cars)){
	document.write("是数组");
}

3、数据类型

3.1 字符串

  1. 正常字符串使用单引号或双引号
  2. 要注意转义字符 \
\n //换行
\t //tab
\u4e2d //汉字'中' u#### Unicode字符
\x41 //‘A’ ASCII字符
  1. 多行字符串编写
//tab上面esc键下面
var msg=
`he1lo
wor1d
你好ya
你好
`
  1. 模板字符串
//tab 上面 esc键下面
let name = "xiaohong";
let age = 3;
let msg =`你好呀,${name}`
  1. 字符串长度
str.length
  1. 字符串的可变性(不可变)
    给字符串重新赋值,打印之后还是原来的字符串
console.log(student[0])
> s
> undefined
student[0] = 1
> 1
console.log(student)
> student
>undefined
  1. 大小写转换
//注意这里是方法,不是属性
student.toUppercase() //大写
student.toLowercase() //小写

  1. 获取索引值
    student.indexOf(‘t’)

  2. substring (截取字符串)

student.substring(1) //从第一个字符串截取到最后一个字符串
student.substring(13) // 相当于[1,3) 截取1,2

3.2 数组

Array可以包含任意的数据类型

var arr = [1,2,3,4,5,6]
arr[0]  //取值
arr[0] = 1 //赋值
  1. 长度
arr.length 

注意:加入给arr.length 赋值,数组大小就会发生变化,如果赋值过小,元素就会丢失

  1. indexOf ,通过元素获得下标索引
arr = [1,2,3,4,5,6,"1","2"]
arr.indexOf(1)
> 0
arr.indexOf("1")
> 6

字符串的”1” 和数字 1 是不同的

  1. slice () 截取array的一部分,返回一个新数组,类似于String中的substring

  2. push() 和 pop() 尾部
    push: 压入到尾部
    pop: 弹出尾部的一个元素

arr = [1,2,3,4,5,6,"1","2"]
arr.push('a','b')
> 10
arr > [1,2,3,4,5,6,"1","2","a","b"]
arr.pop()
>"b”
>[1,2,3,4,5,6,"1","2","a"]
  1. unshift(),shift() 头部(和push 、pop相反)
unshift:压入到头部
shift:弹出头部的一个元素
  1. 排序 sort()
arr = [3,5,1,2]
arr.sort()
> (4)[1,2,3,5]
  1. 元素翻转 reverse()
(3 ["A""B""c"]
arr.reverse
(3) ["c""B""A"]
  1. concat() 拼接两个数组
    concat() 并没有修改数组,只是会返回一个新的数组
(3) ["c""B""A""]
arr.concat([1,2,3])
(6["c""B""A"123]
arr
(3["c""B""A"]
  1. 连接符 join
    打印拼接数组,使用特定的字符串连接
3 ["c""B""A"]
arr.join('-')
"c-B-A"
  1. 多维数组
arr = [[1,2],[3,4],["5", "6"]];
arr[1][1]
4

3.3 对象

若干个键值对

var 对象名 = {
	属性名:属性值,
	属性名:属性值,
	属性名:属性值
}

//定义了一个person对象,它有四个属性!
var person = {
name : "xiaohong",
age: 3,
email : "123456789@qq.com",
score: 0
}

JS中对象,{…}表示一个对象,键值对描述属性 xxx: xxxx, 多个属性之间使用逗号隔开,最后一个属性不加逗号

JavaScript中的所有的键都是字符串,值是任意对象!

  1. 对象赋值
person.name = "xiaohong"
"xiaohong"
person.name
>"xiaohong"
  1. 使用一个不存在的对象属性,不会报错! undefined
person.haha
> undefined
  1. 动态的删减属性,通过delete删除对象的属性
delete person.name
> true
> person

  1. 动态的添加,直接给新的属性添加值即可
person.haha = "haha"
> "haha"
//person 里就多了haha属性
  1. 判断属性值是否在这个对象中! XXX in XXX!
'age' in person
true
//继承
'tostring' in person
true
  1. 判断一个属性是否是这个对象自身拥有的hasOneProperty()
person .hasownProperty('tostring')
> false
person.hasownProperty('age')
> true

3.4 流程控制

  1. if 判断
var score = 90;
if(score>90){
	alert("win");
}else if(score < 90){
	alert("lose");
}else{
	alert("---");
}
  1. while 避免程序死循环
    注意,do{ }while( )

  2. for循环 (和Java差不多)

  3. forEach循环

var age =[12,3,12,3,12,3,12,31,23,123];
//函数
age.forEach(function (alue) {
console.log(value)
})
  1. for…in
//for(var index in object){}
for(var num in age){
	if (age.hasownProperty(num)){
		console.log("存在")
		console. 1og(age[num])
	}
}

3.5 Map 和 Set

ES6新特性~~
Map:

//ES6 Map
//学生的成绩,学生的名字
// var names = ["tom" , "jack" , "haha""];
// var scores = [100,90,80];

var map = new Map([['tom',100],['jack',90],['haha',80]])
var name = map.get('tom');//通过key获得value
map.set('admin',123456);//新增或修改
map.delete("tom");//删除

Set: 无序不重复的集合

set.add(2);//添加!
set.delete(1);//删除!
console.log(set.has(3));/是否包含某个元素,此处是看是否包含3

3.6 iterator

ES6新特性

使用iterator来遍历迭代Map,Set

//通过for of来遍历数组   for in 只能遍历索引值
var arr =[3,4,5]
for (var x of arr){
	console.log(x)
}
> 3 4 5

遍历Map

var map = new Map([["tom" ,100],["jack",90],["haha",80]]);
for (let x of map){
console.log(x)

遍历Set

var set = new set([5,6,7]);
for (let x of set) {
	console.log(x)
}

4、函数

4.1 定义函数

定义方式一

绝对值函数

function abs(x){
	if(x>=0){
		return x;
	}else{
		return -x;
	]
}

一旦执行到return代表函数结束,返回结果!
如果没有执行return,函数执行完也会返回结果,结果就是undefined

定义方式二

var abs = function (×){
	if(x>=O){
		return x;
	}else{
		return -x;
	}
}

function(x){…}这是一个匿名函数,但是可以把结果赋值给abs,通过abs就可以调用函数!(方式一和方式二等价)

调用函数

abs(10) //10
abs(-10) //10

参数问题:JavaScript可以传任意个参数,也可以不传递参数

假设不存在 参数,如何规避?

var abs = function (x){
//手动抛出异常来判断
	if (typeof x!== 'number') {
		throw 'Not a Number';
	}
	if(x>=0){
		return x;
	}else{
		return -x;
	}
}

arguments

arguments是一个jS免费赠送的关键字
代表:传递进来的所以参数,是一个数组

var abs = function(x){
	console.log("x=>"+x);
	for (var i = 0; i<arguments.length;i++){
		console.log(arguments[i]);
		if(x>=0){
			return x;
		}e1se{
			return -x;
		}
	}
}

问题: arguments包含所以的参数,有时候想使用多余的参数来进行附加操作,需要排除已有的参数

rest

以前:

if (arguments.1ength>2){
	for (var i = 2; i<arguments.1ength;i++){
		//。。。。
	}
}

ES6引入的新特性,获取除了已经定义的参数之外的所有参数~

function aaa(a,b,...rest) {
	console.1og("a=>"+a);
	console.log("b=>"+b);
	console.log(rest);
	}

rest参数只能写在最后面,必须用…标识

4.2 变量的作用域

在JavaScript中,var定义变量实际是有作用域的。
假设函数体中声明,则在函数体外不可以使用(闭包)

function qj() {
	var x = 1;
	x = x + 1;
	}
	x = x + 2; //Uncaught ReferenceError: x is not defined

如果两个函数使用了相同的变量名,只要在函数内部,就不冲突

function qj (){
	var x = 1;
	x = x + 1;
}
function qj2() {
	var x = 'A';
	x = x + 1;
}

内部函数可以访问外部函数的成员,反之则不行

function aj (){
	var x =1;
	//内部函数可以访问外部函数的成员,反之则不行
	function qj2() {
		var y = x + l;// 2
	}
	var z = y + 1;// uncaught ReferenceError: y is not defined
}

假设,内部函数变量和外部函数的变量重名:

function qj(){
	var x = 1;
	function qj() {
		var x = 'A';
		console.log('inner'+x); //innerA
	}
	console.log(' outer'+x; //outer1
		qj2()
}
qj()

假设在JavaScript中函数查找变量从自身函数开始,由内部向外部查找,假设外部存在这个同名的函数变量,则内部函数会屏蔽外部函数的变量。

提升变量的作用域

function qj() {
	var x = "x" + y;
	console.1og(×);
	var y = 'y';
}
> xundefined	

说明:js执行引擎,自动提升了y的声明,但是不会提升变量y的赋值;

function qj2() {
	var y;
	var x = "×" + y;
	conso1e.log(×);
	y = 'y';
}

所有的变量定义都放在函数的头部,不要随意乱发,便于后期代码维护;

全局函数

//全局变量
x = 1;
function f() {
	console.log(x);
}
f();
conso1e.1og(×);

全局对象window

var x = 'xx×';
alert(×);
alert(window.x);//默认所有的全局变量,都会自动绑定在window对象下;

alert()这个函数本身也是一个window变量

var x = "xxx";
window.alert(x);
var old_alert = window.alert;
// > o1d_alert(x);

window.alert = function(){
}
//发现alert()失效了
window.alert(123);

//恢复
window.alert = o1d_alert;
window.alert(456);

JavaScript实际上只有一个全局作用域,任何变量(函数也可以视为变量),假设没有再函数作用范围内找到,就会向外查找,如果在全局作用域都没有用找到,报错ReferenceError

规范:
由于所有的全局变量都会绑定到window上。如果不同的js文件,使用了相同的全局变
量,冲突~>如果能够减少冲突?

//唯一企局变量
var HongApp = {};
//定义全局变量
HongApp.name = 'xiaohong';
HongApp.add = function (a,b) {
	return a + b;
}

把自己的代码全部放入自己定义的唯一空间名字中,降低全局命名冲突的问题~

局部作用域 let
var是会导致局部作用域冲突

function aaa() {
	for (var i = 0; i < 100; i++{
		console.log(i)
	}
	console.log(i+1);//问题: i 出了这个作用域还可以使用
}

ES6 let 关键字,解决局部作用域冲突问题

function aaa() {
	for (let i = o; i < 100; i++) {
		conso1e.log(i)
	}
}
	console.1og(i+1);//uncaught ReferenceError: i is not defined

尽量使用let去定义局部作用域的变量;

常量const
在ES6之前,怎么定义常量:只有用全部大写字母命名的变量就是常量;建议不要修改这样的值

var PI = '3.14';
console.log(PI);
PI = '213';//可以改变这个值
console.log(PI);

在ES6引入了常量关键字 const

const PI= '3.14'; //只读变量
console.log(PI);
PI = "123';//TypeError:Assignment to constant variable.
console.log(PI);

4.3 方法

定义方法

方法就是把函数放在对象的里面,对象只有两个东西:属性和方法

var human = {
	name:'小红',
	birth: 2000,
	//方法
	age: function  {
	//今年–出生的年
		var now = new Date.getFu11Year;
		return now-this.birth;
	}
}
//属性
human.name
//方法,一定要带()
human.age()

将上面的方法拆开

function getAge(){
	//今年–出生的年
	var now = new Date().getFullYear();
	return now-this.birth;
}
var human = {
	name:'小红',
	birth: 2000,
	age: getAge
}
//使用human.age() >可以
// 使用getAge() >NaN  如果直接调用getAge就不可以,因为this是默认指向调用的对象,而此时指的是window

this是无法指向的,是默认指向调用它的那个对象;

apply
在JS中可以控制this指向

function getAge() {
	//今年–出生的年
	var now = new Date().getFu11Year();
	return now-this.birth;
}
var human = {
name:'小红',
birth: 2000,
age: getAge
}
//human.age()  >ok
getAge.app1y(human,[]); // this,指向了human,参数为空

5、内部对象

标准对象

typeof 123
"number"
typeof '123'
"string"
typeof true
"boolean"
typeof NaN
"number"
typeof []
"object"
typeof {}
"object"
typeof Math.abs
"function"
typeof undefined
"undefined"

5.1 Date

基本使用

var now = new Date(;//中国标准时间
now.getFu11Year();//年
now.getMonth();//月  0~11代表月
now.getDate();//日
now.getDay();//星期几
now. getHours();//时
now. getMinutes();//分
now.getseconds();//秒
now.getTime();//时间戳全世界统一 1970 1.1 0:00:00 毫秒数
console.log(new Date(//里面写时间戳)) //时间戳转为时间

转换

now = new Date(时间戳)
f toLocalestring() { [native code]}
now.toLocalestring()//注意,调用是一个方式,不是一个属性!
now.toGMTstring()

5.2 JSON

JSON是什么

早期,所有数据传输习惯使用XML文件!

  • JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。
  • 简洁和清晰的层次结构使得JSON成为理想的数据交换语言。
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

在JavaScript一切皆为对象、任何js支持的类型都可以使用JSON来表示:number,string…
格式:

  • 对象都用{ }
  • 数组都用[ ]
  • 所有的键值对,都是用key:value

JSON字符串和JS对象的转化

var user = {
	name: "xiaohong",
	age: 16,
	sex :'女'
}
//对象转化为json字符串{ "name" : "xiaohong" , "age" : 16, "sex":"女"}
var jsonUser = JSON.stringify(user);

//json字符串转化为对象 参数为json字符串
var obj = JSON.parse('{"name" : "xiaohong" , "age" : 16, "sex":"女"}');

JSON和JS对象的区别:

var obj = {a: 'he1lo',b : 'he1lob'};
var json = '{"a": "he1lo","b" : "he1lob"}'

6、面向对象编程

原型对象

JavaScript、Java、C#… 都有一个特性是面向对象;而JavaScript有些不同。

  • 类:模板
  • 对象:具体的实例
var student = {
	name: "xiaohong",
	age: 16,
	run: function ( {
		console.log(this.name + " run....");
	}
}
var xiaoming = {
	name : "xiaoming"
};

//原型对象
//此时xiaoming就可以使用student的属性
xiaoming.__proto__= student;

var Bird = {
	f1y: function (){
		console.log(this.name + " f1y....");
	}
};

//小明的原型是bird
xiaoming.proto_= Bird;

在JavaScript中,每个函数都有一个prototype属性,这个属性指向函数的原型对象。

class继承

class关键字,在ES6引入

//定义一个学生的类
class student{
	constructor(name) {
		this.name = name;
	}
	he11o() {
		alert('he11o')
	}
}

var xiaoming = new student("xiaoming");
var xiaohong = new student("xiaohong");
xiaoming.he1lo()

继承

//ES6之后
//定义一个学生的类
class student{
	constructor(name){
		this.name = name;
	}
	hel1o(){
		alert( 'he1lo')
	}
}

class xiaostudent extends student{
	constructor(name, grade){
		super(name);
		this.grade = grade;
	}
	myGrade() {
		alert('我是一名小学生')
	}
}
var xiaoming = new student("xiaoming");
var xiaohong = new xiaostudent("xiaohong",1);

原型链:

_ proto _: 这是每个对象(除null外)都会有的属性,叫做 _ proto _,这个属性会指向该对象的原型。在这里插入图片描述

7、操作BOM对象(重点)

浏览器介绍

JavaScript和浏览器关系:
JavaScript就是为了能够让他在浏览器中运行
BOM:浏览器对象模型

window

window代表浏览器窗口

window.alert(1)
undefined
window.innerHeight
//可以调整浏览器窗口试试

Navigator

Navigator,封装了浏览器的信息
大多数,不会使用该对象,因为会被人为修改

screen

代表屏幕尺寸

location(重要)

location代表当前页面的URL信息

host:"www.baidu.com"   //主机
href:"https://www.baidu.com/"  //当前指向的位置
protocol:"https:"  //协议
reload: f reload()  //刷新网页
// 设置新的地址
location.assign()

document(内容 DOM)

document代表当前的页面,HTML DOM文档树可以获取具体的文档树节点。
DOM即文档对象模型描绘了一个层次化的节点树,可以添加、移出和修改页面的某一部分。
每个载入浏览器的HTML文档都会成为Document对象。
Document对象是Window对象的一部分,可以通过window.document属性对其进行访问

<dl id="app">
	<dt>Java</dt>
	<dd>JavaSE</dd>
	<dd>JavaEE</dd>
</d1>
<script>
var dl = document.getElementById('app ');
</script>

获取cookie
document.cookie

劫持cookie原理
在原来的网站中引入一个js,可以获取cookie。

服务器端可以设置 cookie:httpOnly

history

history.back() //后退
history,forward() //前进

8、操作DOM对象(重点)

DOM:文档对象模型

核心

浏览器网页就是一个Dom树结构

  • 更新:更新Dom节点
  • 遍历dom节点:得到Dom节点
  • 删除:删除一个Dom节点
  • 添加:添加一个新的节点

要操作一个Dom节点,就必须要先获取这个Dom节点

获取dom节点

/对应css 选择器
var h1 = document.getElementsByTagName('h1');
var p1 = document.getElemenById('p1');
var p2 = document.getElementsByc1assName( 'p2');
var father = document.getElementById('father ');
var childrens = father.children[index];//获取父节点下的所有子节点
//father.firstchild
//father.lastchild

这是原生代码,之后尽量使用jQuery

更新节点

<div id="id1">
</div>
<script>
var id1 = document.getElementById('id1');
</script> 

操作文本

  • id1.innerText=‘内容’ 修改文本的值
  • id1.innerHTML=‘123’ 可以解析HTML文本标签

操作CSS

id1.style.color = 'ye11ow'; // 属性使用字符串 包裹
id1.sty1e.fontsize='20px'; //‘-’ 转 驼峰命名
id1.style.padding = '2em'

删除节点

删除节点的步骤:先获取父节点,在通过父节点删除自己

<div id="father">
	<hl>标题一</h1>
	<p id="p1">p1</p>
	<p class="p2">p2</P>
</div>
<script>
	var self = document.getElementById('p1');
	var father = p1.parentE1ement;
	father.removechild(self)

	//删除是一个动态的过程:
	father.removechi1d(father.children[0])
	father.removechild(father.chi1dren[1])
	father.removechi1d(father.children[2])

</script>

注意:删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意!

插入节点

获得某个Dom节点,假设这个dom节点是空的,通过innerHTML就可以增加一个元素了,但是这个DOM节点已经存在元素了,就不能这样做,否则会产生覆盖

追加:

<p id="js">Javascript</p>
<div id="list">
	<p id="se"">JavaSE</p>
	<p id="ee">JavaEE</p>
	<p id="me">JavaME</p>
</div>
<script>
	var js = document.getE1ementById('js');
	var list = document.getE1ementById('7ist');
	list.appendChild(js); //追加到后面
</script>
// >> 结果则JavaScript加到JavaME后面了 

创建一个新的标签,实现插入

<script>
	var js = document.getE1ementById('js');//已经存在的节点
	var list = document.getElementById('list');
	//通过JS创建一个新的节点
	var newP = document.createElement('p'); //创建一个p标签
	newP.id = 'newP';
	newP.innerText = 'He1lo';
	//创建一个标签节点
	var myScript = document.createElement('script');
	myscript.setAttribute('type','text/javascript');
	//可以创建一个style标签
	var myStyle= document.createElement('style');//创建了一个空style标签
	mysty1e.setAttribute('type','text/css';
	mysty1e.innerHTML= 'body{background-color: chartreuse;}';//设置标签内
容
	document.getE1ementsByTagName( 'head')[0].appendChild(myStyle)

</script>

insertBefore

var ee = document.getElementByrd('ee') ;
var js = document.getElementById('js');
var list = document.getElementById('1ist');
//要包含的节点.insertBefore(newNode, targetNode)
list.insertBefore(js,ee);

9、操作表单(验证)

表单是什么? form DOM 树

  • 文本框 text
  • 下拉框 select
  • 单选框 radio
  • 多选框 checkbox

表单的目的:提交信息

获得要提交的信息

<form action="post">
	<p>
		<span>用户名:</span> <input type="text" id="username">
	</p>
	<!--多选框的值,就是定义好的value -->
	<P>
		<span>性别:</span>
		<input type="radio" name="sex" value="man" id=""boy"><input type="radio" name="sex" value="women" id="gir1"></p>
</form>
<script>
	var input_text = document.getElementById("username");
	var boy_radio = document.getE1ementById('boy');
	var gir1_radio = document.getElementById('gir1');
//得到输入框的值
input_text.value
//修改输入框的值
input_text.value = '123'
//对于单选框,多选框等等固定的值,boy_radio.value只能取到当前的值
boy_radio.checked;//查看返回的结果,是否为true,如果为true,则被选中~
gir1_radio.checked = true;//赋值
</script>

提交表单 md5加密密码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript思维导图是一种可视化工具,用于展示和组织JavaScript编程语言的不同概念、特性和功能。它通过使用节点和连线的方式将这些信息有机地连接起来,使得开发者更容易理解和记忆。 在一个JavaScript思维导图中,通常会包含一些核心概念,例如变量、函数、条件语句、循环、对象等。这些核心概念作为主要的节点,通过连线的方式表示它们之间的关系。 除了核心概念外,思维导图还可以包含其他相关的概念和主题。例如,它可以展示JavaScript中的各种数据类型,如字符串、数字、数组、对象等。它还可以展示JavaScript中的常用方法和API,如字符串操作、数组操作、DOM操作等。 思维导图还可以通过不同的颜色、图标和字体等方式来表示特定的概念或者标记重要的内容。这有助于提醒开发者注意某些关键点或者了解到某些特殊的情况。 与传统的纸质笔记相比,JavaScript思维导图具有更好的可视化效果和交互性。开发者可以通过展开和折叠节点来调整导图的层次结构,以便更好地组织和管理不同的概念。他们还可以轻松地导出或分享导图,以便与其他人合作或者复习。 总之,JavaScript思维导图是一种强大的工具,可以帮助开发者更好地理解和掌握JavaScript编程语言。它提供了一种清晰和直观的方式来展示和组织复杂的信息,使学习和开发过程更加高效和愉快。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值