web基础03-JavaScript

目录

一、JavaScript基础

1.变量

2.输出

3.变量提升

4.区块

5.JavaScript数据类型

6.查看数值类型

7.undefined和null

8.布尔值

9.===和==的区别

10.算数/三元/比较/逻辑/赋值运算符

11.特殊字符

12.字符串

(1)获取字符串长度

(2)字符串连接

(3)不可变性

13.条件语句

14.循环语句

15.标签

16.函数

17.作用域

18.变量生命周期

19.弹窗

(1)Alert 警告框

(2)prompt提示框

(3)confirm确认框

20.对象

21.数组

(1)创建

(2)访问

(3)内置属性

(4)内置方法

①添加

②删除

③连接数组

④遍历

⑤查找

⑥切片

⑦关联数组

22.常用对象

(1)String

(2)Window对象

(3)JSON

(4)Math 对象

(5)Date 对象

(6)DOM

①元素选择

②改变属性

③添加/移除/替换元素

23.动画

24.事件

(1)事件监听


一、JavaScript基础

详细内容网上搜吧

JavaScript区分大小写

1.变量

声明变量

var 变量名;

如果没有在 var 声明语句中给 变量指定初始值, 在 变量 存入一个值之前,其初始值为 undefined。

给变量赋值

使用赋值运算符 ‘=’

变量名命名规则

  • 由字母、数字、下划线、$符号组成,不能以数字开头

  • 不能是关键字和保留字,例如:for,while,this,name

  • 区分大小写

  • 不能是算数运算符

  • 不允许使用连字符(-),它被保留用于减法。

保留字:

img

变量名命名规范

  • 变量名必须有意义

  • 遵守驼峰命名法

  • 不建议使用$作为变量名

2.输出

JavaScript 没有任何打印或者输出的函数。

JavaScript 可以通过以下几种方式来输出数据:

  • 使用 document.write() 方法将内容写到 HTML 文档中。

  • 使用 window.alert() 弹出警告框。

  • 使用 innerHTML 写入到 HTML 元素。

  • 使用 console.log() 写入到浏览器的控制台。

可以使用HTML标签来格式化JavaScript中的文本。

如:

<script>
    document.write("test");
    document.write("<h1>test</h1>");
</script>

3.变量提升

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。

console.log(a);
​​​​​​​var a = 1;

上面代码首先使用console.log方法,在控制台(console)显示变量a的值。这时变量a还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。

var a;console.log(a);
a = 1;

最后的结果是显示undefined,表示变量a已声明,但还未赋值。

4.区块

JavaScript 使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。

对于var命令来说,JavaScript 的区块不构成单独的作用域(scope)。

{  var a = 1;
}
a // 1

上面代码在区块内部,使用var命令声明并赋值了变量a,然后在区块外部,变量a依然有效,区块对于var命令不构成单独的作用域,与不使用区块的情况没有任何区别。在 JavaScript 语言中,单独使用区块并不常见,区块往往用来构成其他更复杂的语法结构,比如for、if、while、function等

5.JavaScript数据类型

JavaScript 有五种基本数据类型:

  • 字符串(string):字符串可以是引号中的任意文本。您可以使用 单引号双引号

    • 使用单引号括起来的字符串中,如果要包含单引号须使用反斜杠(\)转义处理字符串中的单引号

    • 使用双引号括起来的字符串中,如果要包含双引号须使用反斜杠(\)转义处理字符串中的双引号

    • 可以使用索引位置来访问字符串中的每个字符,索引从0开始

  • 数字(number):JavaScript 只有一种数值类型。

    • 数值可以带小数点,也可以不带,

    • 极大或极小的数字可以通过科学(指数)计数法来书写:

  • 布尔(boolean):只有false和true两个值

  • 空(null)

  • 未定义(undefined)

  • 对象(object):一种复杂数据类型:

JavaScript 中的变量是没有类型的,只有值才有。变量可以随时持有任何类型的值。

ES6还有个symbol的基本数据类型

6.查看数值类型

使用typeof 运算符

我们可以用 typeof 运算符来查看值得类型,它返回的是类型的字符串值。

typeof(123)

特殊:null类型

7.undefined和null

null与undefined都可以表示“没有”,含义非常相似。将一个变量赋值为undefined或null,老实说,语法效果几乎没区别。

var a = undefined;
// 或者
var a = null;

上面代码中,变量a分别被赋值为undefined和null,这两种写法的效果几乎等价。

在if语句中,它们都会被自动转为false,相等运算符(==)甚至直接报告两者相等。

if (!undefined) {  
    console.log('undefined is false');
}// undefined is false
if (!null) {  
    console.log('null is false');
}// null is false   
undefined == null// true

从上面代码可见,两者的行为是何等相似!谷歌公司开发的 JavaScript 语言的替代品 Dart 语言,就明确规定只有null,没有undefined!

既然含义与用法都差不多,为什么要同时设置两个这样的值,这不是无端增加复杂度,令初学者困扰吗?这与历史原因有关。

1995年 JavaScript 诞生时,最初像 Java 一样,只设置了null表示"无"。根据 C 语言的传统,null可以自动转为0。

Number(null) 
// 0
5 + null 
// 5

上面代码中,null转为数字时,自动变成0。

但是,JavaScript 的设计者 Brendan Eich,觉得这样做还不够。首先,第一版的 JavaScript 里面,null就像在 Java 里一样,被当成一个对象,Brendan Eich 觉得表示“无”的值最好不是对象。其次,那时的 JavaScript 不包括错误处理机制,Brendan Eich 觉得,如果null自动转为0,很不容易发现错误。

因此,他又设计了一个undefined。区别是这样的:null是一个表示“空”的对象,转为数值时为0;undefined是一个表示"此处无定义"的原始值,转为数值时为NaN。

Number(undefined) 
// NaN
5 + undefined 
// NaN

用法和含义

对于null和undefined,大致可以像下面这样理解。

null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。

undefined表示“未定义”,下面是返回undefined的典型场景。

// 变量声明了,但没有赋值var i;
i // undefined// 调用函数时,应该提供的参数没有提供,该参数等于 undefinedfunction f(x) {  return x;
}
f() // undefined// 对象没有赋值的属性var  o = new Object();
o.p // undefined// 函数没有返回值时,默认返回 undefinedfunction f() {}
f() // undefined

8.布尔值

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。

下列运算符会返回布尔值:

  • 两元逻辑运算符: && (And),|| (Or)

  • 前置逻辑运算符: ! (Not)

  • 相等运算符:===,!==,==,!=

  • 比较运算符:>,>=,<,<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。

  • undefined

  • null

  • false

  • 0

  • NaN

  • ""或''(空字符串)

布尔值往往用于程序流程的控制,请看一个例子。

if ('') {  
    console.log('true');
}// 没有任何输出

上面代码中,if命令后面的判断条件,预期应该是一个布尔值,所以 JavaScript 自动将空字符串,转为布尔值false,导致程序不会进入代码块,所以没有任何输出。

注意,空数组([])和空对象({})对应的布尔值,都是true。

if ([]) {  
    console.log('true');
}// true
if ({}) {  
    console.log('true');
}// true

9.===和==的区别

==:非严格相等

  1. 如果操作数具有相同的类型,则按如下方式进行比较:

    • 对象(Object):仅当两个操作数引用同一个对象时返回 true。

    • 字符串(String):只有当两个操作数具有相同的字符且顺序相同时才返回 true。

    • 数值(Number):如果两个操作数的值相同,则返回 true。+0 和 -0 被视为相同的值。如果任何一个操作数是 NaN,返回 false;所以,NaN 永远不等于 NaN。

    • 布尔值(Boolean):仅当操作数都为 true 或都为 false 时返回 true。

    • 大整形(BigInt):仅当两个操作数值相同时返回 true。

    • 符号(Symbol):仅当两个操作数引用相同的符号时返回 true。

  2. 如果其中一个操作数为 null 或 undefined,另一个操作数也必须为 null 或 undefined 以返回 true。否则返回 false。

  3. 如果其中一个操作数是对象,另一个是基本类型,按此顺序使用对象的 @@toPrimitive()(以 "default" 作为提示),valueOf() 和 toString() 方法将对象转换为基本类型。(这个基本类型转换与相加中使用的转换相同。)

  4. 在这一步,两个操作数都被转换为基本类型(String、Number、Boolean、Symbol 和 BigInt 中的一个)。其余的转换是逐个进行的。

    • 如果是相同的类型,使用步骤 1 进行比较。

    • 如果其中一个操作数是 Symbol 而另一个不是,返回 false。

    • 如果其中一个操作数是布尔型而另一个不是,则将布尔型转换为数字:true 转换为 1,false 转换为 0。然后再次松散地比较两个操作数。

    • Number to String:使用与 Number() 构造函数相同的算法将字符串转换为数字。转换失败将导致 NaN,这将保证相等是 false。

    • Number to BigInt:按数值进行比较。如果数值为 ±∞ 或 NaN,返回 false。

    • String to BigInt:使用与 BigInt() 构造函数相同的算法将字符串转换为 BigInt。如果转换失败,返回 false。

宽松相等是对称的:A == B 对于 A 和 B 的任何值总是具有与 B == A 相同的语义(应用转换的顺序除外)。

===:严格相等

  • 如果操作数的类型不同,则返回 false。

  • 如果两个操作数都是对象,只有当它们指向同一个对象时才返回 true。

  • 如果两个操作数都为 null,或者两个操作数都为 undefined,返回 true。

  • 如果两个操作数有任意一个为 NaN,返回 false。

  • 否则,比较两个操作数的值:

    • 数字类型必须拥有相同的数值。+0 和 -0 会被认为是相同的值。

    • 字符串类型必须拥有相同顺序的相同字符。

    • 布尔运算符必须同时为 true 或同时为 false。

10.算数/三元/比较/逻辑/赋值运算符

同Java

比较运算符:

img

赋值运算符:

img

11.特殊字符

代码输出
'单引号
"双引号
\反斜杠
\n换行
\r回车
\ttab(制表符)
\b退格符
\f换页符

12.字符串

(1)获取字符串长度

使用内置属性 length 来计算字符串的长度

(2)字符串连接

使用‘’+‘’来连接

(3)不可变性

在 JavaScript 中,字符串 的值是 不可变的,这意味着一旦字符串被创建就不能被改变。

13.条件语句

同Java

14.循环语句

同java

15.标签

JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

label:
  语句

标签可以是任意的标识符,但不能是保留字,语句部分可以是任意语句。

标签通常与break语句和continue语句配合使用,跳出特定的循环。

top:  
for (var i = 0; i < 3; i++){    
    for (var j = 0; j < 3; j++){       
        if (i === 1 && j === 1) break top;         
        console.log('i=' + i + ', j=' + j);
    }
}// i=0, j=0// i=0, j=1// i=0, j=2// i=1, j=0

上面代码为一个双重循环区块,break命令后面加上了top标签(注意,top不用加引号),满足条件时,直接跳出双层循环。如果break语句后面不使用标签,则只能跳出内层循环,进入下一次的外层循环。

标签也可以用于跳出代码块。

foo: {  
    console.log(1);  
    break foo;
    console.log('本行不会输出');
}
console.log(2);// 1// 2

上面代码执行到break foo,就会跳出区块。

continue语句也可以与标签配合使用。

top:  
for (var i = 0; i < 3; i++){    
    for (var j = 0; j < 3; j++){      
        if (i === 1 && j === 1) continue top;      
        console.log('i=' + i + ', j=' + j);
    }
}// i=0, j=0// i=0, j=1// i=0, j=2// i=1, j=0// i=2, j=0// i=2, j=1// i=2, j=2

上面代码中,continue命令后面有一个标签名,满足条件时,会跳过当前循环,直接进入下一轮外层循环。如果continue语句后面不使用标签,则只能进入下一轮的内层循环。

16.函数

JavaScript函数是用于执行特定任务的代码块。

  • 主要作用:代码重用,使用不同的参数多次使用相同的代码,以产生不同的结果。

与Java方法类似,参数不需要对类型进行声明。

要执行函数,您需要调用它。

要调用函数,从函数的名称开始,然后使用括号中的参数。

根据需求决定调用次数

function fName(param01,param02) {
      return param01+param02;
}
fName(123,154);

显式参数和隐式参数:

函数显式参数在函数定义时列出。

函数隐式参数(arguments)是函数调用时传递给函数真正的值。

function sum(){
    return arguments[0]+arguments[1];
}
sum(1, 2);//3

函数参数规则:

  • JavaScript 函数定义时参数没有指定数据类型。

  • JavaScript 函数对隐藏参数(arguments)没有进行检测。

  • JavaScript 函数对隐藏参数(arguments)的个数没有进行检测。

注意:

  • 分号是用来分隔可执行JavaScript语句。

  • 由于函数声明不是一个可执行语句,所以不以分号结束。

  • 如果使用缺少参数(少于声明数)调用函数,则将缺少的值为undefined,这表示未为变量赋值。

return:

return 语句在函数中是可选的。它用于从函数返回值。

当JavaScript执行完 return 语句时,该函数停止执行。

如果没有从函数返回任何东西,它将返回 undefined

17.作用域

作用域是可访问变量的集合。

JavaScript 中, 对象函数同样也是变量。

JavaScript 中, 作用域为可访问变量,对象,函数的集合。

JavaScript 函数作用域: 作用域在函数内修改。

JavaScript 局部作用域

变量在函数内声明,变量为局部作用域。

局部变量:只能在函数内部访问。

// 此处不能调用 carName 变量
function myFunction() {
    var carName = "大众";
    // 函数内可调用 carName 变量
}

因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。

局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁

局部变量的优先级高于同名的全局变量。

// 声明 全局carName
var carName = '奔驰';
function myFunction() {
    var carName = "大众";
    document.write(carName); // carName 值为 大众
}

变量在函数外定义,即为全局变量。

全局变量有 全局作用域: 网页中所有脚本和函数均可使用。

如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。

注意:

没有使用var关键字定义的变量,会被自动创建在全局作用域中,变成全局变量。当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时候会产生意想不到的后果,可能导致你的代码出现BUG。最好使用 var 关键字来声明变量。

18.变量生命周期

JavaScript 变量生命周期在它声明时初始化。

局部变量在函数执行完毕后销毁。

全局变量在页面关闭后销毁。

函数参数只在函数内起作用,是局部变量。

19.弹窗

JavaScript提供三种类型的弹出框,Alert, Prompt,Confirm

(1)Alert 警告框

当弹出警报框时,用户必须单击“确定”继续。

警报功能采用单个参数,即弹出框中显示的文本。

使用 alert 弹出框,将阻塞整个页面的运行,点击确定后才继续运行.

(2)prompt提示框

通常使用提示框来让用户输入一个值。

当弹出提示框时,输入输入值后,用户将不得不单击“确定”或“取消”继续。

如果用户单击确定,该框将返回输入值。如果用户单击取消,该框将返回null。

prompt() 方法有两个参数

- 第一个是要在文本框中显示的标签。

- 第二个是在文本框中显示的默认字符串(可选)。

(3)confirm确认框

经常使用 confirm 让用户验证或接受某些内容。

当弹出确认框时,用户必须单击“确定”或“取消”继续。

如果用户单击确定,该框将返回 true。如果用户单击取消,该框将返回 false

20.对象

JavaScript 对象是拥有属性和方法的数据。

JavaScript 中一切皆对象:字符串、数值、数组、函数...

JavaScript 也允许自定义对象。

JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。

  • 布尔型可以是一个对象。

  • 数字型可以是一个对象。

  • 字符串也可以是一个对象

  • 日期是一个对象

  • 数学和正则表达式也是对象

  • 数组是一个对象

  • 甚至函数也可以是对象

你可以使用字符来定义和创建 JavaScript 对象:

var person = {
 name: "John", age: 31, 
 favColor: "green", height: 183
};

定义 JavaScript 对象可以跨越多行,空格跟换行不是必须的。

img

访问对象属性:

您可以通过两种方式访问对象属性。

objectName.propertyName
//或者
objectName['propertyName']

这个例子使用了两种方式访问 person 的年龄

var person = {
 name: "John", age: 31, 
 favColor: "green", height: 183
};
var x = person.age;
var y = person['age'];

JavaScript的内置长度属性用于计算属性或字符串中的字符数。

var course = {name: "JS", lessons: 54};
document.write(course.name.length);
// -> 2

两种方式访问对象属性的区别:

  • 点方法后面跟的必须是一个指定的属性名称,而中括号方法里面可以是变量。例如

var haha = "name";
console.log(obj.haha); // undefined
console.log(obj[haha]); // cedric
  • 中括号方法里面的属性名可以是数字,而点方法后面的属性名不可以是数字

  • 当动态为对象添加属性时,必须使用中括号[],不可用点方法

当你创建了一个对象后,你可以用.或[]来更新对象的属性。

var ourDog = {"name": "Camper","legs": 4,"tails": 1,"friends": ["everything!"]};
ourDog.name = "Happy Camper";
ourDog["name"] = "Happy Camper";

你也可以像更改属性一样给对象添加属性。

删除属性:

var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
​
var c1 = ourDog['tails']; // c1 等于 1
// 删除 tails 属性
delete ourDog['tails']; // 等价于 delete ourDog.tails
var c2 = ourDog['tails']; // c2 等于 undefined

对象方法

对象方法是一个包含函数定义的属性。

您可以通过以下语法来调用方法:

对象名.方法名()

这个例子使用了 String 对象的 toUpperCase() 方法来将文本转换为大写:

var message = "Hello world!";
var x = message.toUpperCase();

在以上代码执行后,x 的值将是:

HELLO WORLD!

提示: 方法是作为对象属性存储的函数。

使用 [] 读取对象属性

var myObj = {
"name": "Loen",
"age": "28",
"eat": function(){
    return "I'm eating";
}
};
​
myObj["name"]; // Loen
​
var a = 'age';
myObj[a]; // 还可以用变量访问对象属性, 这里返回 28
​
myObj['eat'](); // 返回 I'm eating

对象构造器

使用函数来构造对象:

function person(firstname, lastname, age, eyecolor){
    this.firstname = firstname;
    this.lastname = lastname;
    this.age = age;
    this.eyecolor = eyecolor;
}

在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)

一旦有了对象构造器,就可以创建新的对象实例,同Java

初始化

使用英文大括号{}创建单个对象:var John = {name: "John", age: 25};

方法

方法是存储在对象属性中的函数。

使用以下方式创建对象函数:

methodName : function() { code lines }

使用以下方式访问对象函数:

objectName.methodName()

this 关键词是当前对象的引用,这意味着您可以使用 this 来访问对象属性和方法。

在构造函数中定义方法:

function person(name, age) {
  this.name = name;  
  this.age = age;
  this.changeName = function (name) {
    this.name = name;
  }
}
​
var p = new person("Loen", 28);
p.changeName("John");

在上面的示例中,我们定义了一个名为 changeName 的方法,该方法是一个函数,它接受参数名称并将其分配给对象的 name 属性。

你也可以在构造函数外部定义一个函数,通过函数名关联到对象的属性上:

function person(name, age) {
  this.name= name;  
  this.age = age;
  this.yearOfBirth = bornYear; // 关联 bornYear 函数
}
function bornYear() {
  return new Date().getFullYear() - this.age; 
}

以上代码中 new Date().getFullYear() 是获取今年完整的年份时间 如:2017 , 如您所见,我们已将对象的 yearOfBirth 属性赋予 bornYear 函数。当通过对象调用 bornYear 函数时, bornYear 函数中 this 指向这个对象。

将函数关联到对象属性时不需要写括号。

方法的调用

function person(name, age) {
  this.name= name;  
  this.age = age;
  this.yearOfBirth = bornYear;
}
function bornYear() {
  return new Date().getFullYear() - this.age;
}
​
var p = new person("Loen", 29);
document.write(p.yearOfBirth());

21.数组

(1)创建
var mycars = new Array("Saab","Volvo","BMW");

动态创建

JavaScript数组是动态的,所以你可以声明一个数组,不给 Array() 构造函数传递任何参数。然后可以动态添加元素。

var mycars = new Array();
mycars[0] = "Saab";
mycars[1] = "Volvo";
mycars[2] = "BMW";
mycars[3] = "Lincoln";

字面量创建(常用):

为了更大的简单性,可读性和执行速度,您还可以使用数组字面量语法来声明数组。

var mycars = ["Saab", "Volvo", "BMW"]; 

声明方式和使用 new Array() 方式创建的数组相同.

(2)访问

通过指定数组名以及索引号码,你可以访问某个特定的元素。

尝试访问数组以外的索引,返回值 undefined

索引从0开始

(3)内置属性

数组的 length 属性返回它的元素的数量。

数组为空则length属性的值为0

(4)内置方法
①添加

push() 方法

在数组末尾增加一个或多个元素:

在数组尾部压入一个元素与给数组 a[a.length]赋值是一样的.

unshift() 方法

你不仅可以 shift(移出)数组中的第一个元素,你也可以 unshift(移入)一个元素到数组的头部。

.unshift() 方法用起来就像 .push() 方法一样, 但不是在数组的末尾添加元素,而是在数组的头部添加元素。

②删除

pop() 方法

改变数组中数据的另一种方法是用 .pop() 方法。

.pop() 方法用来删除(“抛出”)一个数组末尾的值。

我们可以把这个删除(“抛出”)的值赋给一个变量存储起来。

数组中任何类型的数据条目(数值,字符串,甚至是数组)可以被“抛出来” 。

shift() 方法

.pop() 方法用来移出数组中最后一个元素。如果想要移出数组第一个元素要怎么办呢?

.shift() 就是专门用来处理这类型需求的。它的工作原理类似 .pop(),但它移除的是第一个元素,而不是最后一个。

③连接数组

concat() 方法

JavaScript的 concat() 方法允许您连接数组并创建一个全新的数组。

concat 操作不会影响原数组 - 它会将所产生的连接作为新数组返回。

④遍历

forEach() 方法

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

对于空数组是不会执行回调函数的。

var numbers = [64, 45, 72, 11, 49];
function getNumsAndIndex(num,index) {
    console.log(index+":\t"+num);
}
numbers.forEach(getNumsAndIndex);

⑤查找

indexOf() 方法

indexOf() 方法可返回数组中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。

返回第一次出现该元素的位置

如果在数组中没找到指定元素则返回 -1。

⑥切片

slice() 方法

slice() 方法可从已有的数组中返回选定的元素。

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

注意:

slice() 方法不会改变原始数组。

语法

array.slice(start, end)

img

返回值

img

⑦关联数组

虽然许多编程语言支持具有命名索引的数组(文本而不是数字),称为关联数组,但JavaScript不支持。

但是,您仍然可以使用命名数组语法,这将产生一个对象。 例如:

var person = []; // 空数组
person["name"] = "Loen";
person["age"] = 28;
document.write(person["age"]);
// -> "28"

现在,person 被视为一个对象,而不是一个数组。

命名索引“name”和“age”成为person对象的属性。

在关联数组中,索引号被替换为字符串

注意:

当 person 数组被视为对象时,标准数组方法和属性将产生不正确的结果。例如,现在person.length将返回0。

JavaScript不支持使用名称索引数组。

在JavaScript中,数组总是使用数字编号的索引。

当您希望索引为字符串(文本)时,最好使用对象。

当您希望索引为数字时使用数组。

22.常用对象

JavaScript对象_w3cschool

(1)String

String 对象用于处理文本(字符串)。

String 对象创建方法: new String()。

img

注意:

indexOf() 方法区分大小写

replace()在字符替换的情况下,只会替换一次,替换第一个匹配到的。

使用正则替换,最好只替换字母、数字和汉字,替换特色字符会有问题

正则表达式:

JavaScript正则在线测试工具 - 正则表达式工具 - W3Cschool

正则表达式语法速查|正则教程 (stackoverflow.org.cn)

substring() 方法

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

substring() 方法返回的子串包括 开始 处的字符,但不包括 结束 处的字符。

语法

string.substring(from, to)
参数描述
from必需。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置。
to可选。一个非负的整数,比要提取的子串的最后一个字符在 string Object 中的位置多 1。 如果省略该参数,那么返回的子串会一直到字符串的结尾。

substring() 提取从 indexStartindexEnd(不包括)之间的字符。特别地:

  • 如果 indexStart 等于 indexEndsubstring 返回一个空字符串。

  • 如果省略 indexEndsubstring 提取字符一直到字符串末尾。

  • 如果任一参数小于 0 或为 NaN,则被当作 0

  • 如果任一参数大于 stringName.length,则被当作 stringName.length

  • 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样。

(2)Window对象

Window 对象表示浏览器中打开的窗口。

如果文档包含框架(< frame> 或 < iframe> 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。

window作为全局变量,代表了脚本正在运行的窗口,暴露给Javascript代码。

img

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>W3Cschool教程(w3cschool.cn)</title> 
</head>
<body>
<p>文档显示区的高度:<span id="winInnerHeight"></span></p>
<p>文档显示区的宽度:<span id="winInnerWidth"></span></p>
<br>
<p>返回窗口的外部宽度,包含工具条与滚动条:<span id="winOuterWidth"></span></p>
<p>返回窗口的外部高度,包含工具条与滚动条:<span id="winOuterHeight"></span></p>
​
<br>
<p>相对于屏幕窗口的x坐标:<span id="winScreenLeft"></span></p>
<p>相对于屏幕窗口的y坐标:<span id="winScreenTop"></span></p>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<script>
var winInnerHeight = window.innerHeight; //返回窗口的文档显示区的高度。
var winInnerWidth = window.innerWidth; //返回窗口的文档显示区的宽度。
​
var winOuterWidth = window.outerWidth; // 返回窗口的外部宽度,包含工具条与滚动条。
var winOuterHeight = window.outerHeight; // 返回窗口的外部高度,包含工具条与滚动条。
​
var winScreenLeft = window.screenLeft; // 返回相对于屏幕窗口的x坐标
var winScreenTop = window.screenTop; // 返回相对于屏幕窗口的y坐标
​
document.getElementById('winInnerHeight').innerHTML = winInnerHeight;
document.getElementById('winInnerWidth').innerHTML = winInnerWidth;
​
document.getElementById('winOuterWidth').innerHTML = winOuterWidth;
document.getElementById('winOuterHeight').innerHTML = winOuterHeight;
​
document.getElementById('winScreenLeft').innerHTML = winScreenLeft;
document.getElementById('winScreenTop').innerHTML = winScreenTop;
</script>
​
</body>
</html>

窗口对象方法

我们之前有使用过的alert()就是window对象的方法,调用window对象方法可以不需要指定window对象:

alert("hello world");
// 等价于
window.alert('hello world');

窗口对象方法

img

open() 方法

open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。

语法

window.open(URL,name,specs,replace)

img

img

实例:在新浏览器窗口中打开 网址

function open_win() {
    window.open("http://www.w3cschool.cn");
}

实例:下面的示例在一个新的浏览器打开一个window空白页:

function openWin(){
    myWindow=window.open('','','width=200,height=100');
    myWindow.document.write("<p>这是'我的窗口'</p>");
    myWindow.focus();
}

setTimeout() 方法

setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

  • 如果你只想重复执行可以使用 setInterval() 方法。 使用 clearInterval() 方法来阻止函数的执行

  • 使用 clearTimeout() 方法来阻止函数的执行。

setTimeout(function(){ alert("Hello"); }, 3000);

实例: 打开一个新窗口,3 秒后将该窗口关闭

var myWindow = window.open("", "", "width=200, height=100");
myWindow.document.write("<p>这是一个新窗口'</p>");
setTimeout(function(){ myWindow.close() }, 3000);

实例: 使用 clearTimeout() 来阻止函数的执行

var myVar;
 
function myFunction() {
    myVar = setTimeout(function(){ alert("Hello") }, 3000);
}
 
function myStopFunction() {
    clearTimeout(myVar);
}

(3)JSON

JSON (英文全称 JavaScript Object Notation) 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据 。

JSON 是一种轻量级的数据交换格式。

  • JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。

  • 文本可以被任何编程语言读取及作为数据格式传递。

JSON 语法规则

  • 数据为 键/值 对。

  • 数据由逗号分隔。

  • 大括号保存对象

  • 方括号保存数组

JSON 数据 - 一个名称对应一个值

JSON 数据格式为 键/值 对,就像 JavaScript 对象属性。

键/值对包括字段名称(在双引号中),后面一个冒号,然后是值:

"name":"W3Cschool"

JSON 对象

JSON 对象保存在大括号内

就像在 JavaScript 中, 对象可以保存多个 键/值 对:

{"name":"W3Cschool", "url":"www.w3cschool.cn"}

JSON 数组

JSON 数组保存在中括号内。

就像在 JavaScript 中, 数组可以包含对象:

{"sites":[
    {"name":"W3Cschool", "url":"www.w3cschool.cn"}, 
    {"name":"Google", "url":"www.google.com"},
    {"name":"Taobao", "url":"www.taobao.com"}
]}

在以上实例中,对象 "sites" 是一个数组,包含了三个对象。

每个对象为站点的信息(网站名和网站地址)。

(1)内置方法

JSON.parse() 方法用于将一个 JSON 字符串转换为对象。

JSON.parse(text, reviver)
  • text: 必需, 一个有效的 JSON 字符串。

  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

如果指定了 reviver 函数,则解析出的 JavaScript 值(解析值)会经过一次转换后才将被最终返回(返回值)。更具体点讲就是:解析值本身以及它所包含的所有属性,会按照一定的顺序(从最最里层的属性开始,一级级往外,最终到达顶层,也就是解析值本身)分别的去调用 reviver 函数,在调用过程中,当前属性所属的对象会作为 this 值,当前属性名和属性值会分别作为第一个和第二个参数传入 reviver 中。如果 reviver 返回 undefined,则当前属性会从所属对象中删除,如果返回了其他值,则返回的值会成为当前属性新的属性值。

当遍历到最顶层的值(解析值)时,传入 reviver 函数的参数会是空字符串 ""(因为此时已经没有真正的属性)和当前的解析值(有可能已经被修改过了),当前的 this 值会是 {"": 修改过的解析值},在编写 reviver 函数时,要注意到这个特例。(这个函数的遍历顺序依照:从最内层开始,按照层级顺序,依次向外遍历)

JSON.parse('{"p": 5}', function (k, v) {
  if (k === "") return v; // 如果到了最顶层,则直接返回属性值,
  return v * 2; // 否则将属性值变为原来的 2 倍。
}); // { p: 10 }
​
JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
  console.log(k); // 输出当前的属性名,从而得知遍历顺序是从内向外的,
  // 最后一个属性名会是个空字符串。
  return v; // 返回原始属性值,相当于没有传递 reviver 参数。
});

注意:

JSON.parse() 不允许用逗号作为结尾

JSON.stringify() 方法

JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

语法

JSON.stringify(value, replacer, space)

参数说明:

  • value: 必需, 要转换的 JavaScript 值(通常为对象或数组)。

  • replacer:可选。用于转换结果的函数或数组。如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。

  • space: 可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

返回值:

返回包含 JSON 文本的字符串。

实例

var str = {"name":"W3Cschool", "site":"http://www.w3cschool.cn"}
str_pretty1 = JSON.stringify(str)
document.write( "只有一个参数情况:" );
document.write( "<br>" );
document.write("<pre>" + str_pretty1 + "</pre>" );
 
document.write( "<br>" );
str_pretty2 = JSON.stringify(str, null, 4) //使用四个空格缩进
document.write( "使用参数情况:" );
document.write( "<br>" );
document.write("<pre>" + str_pretty2 + "</pre>" ); // pre 用于格式化输出

(4)Math 对象

Math(算数)对象的作用是:执行普通的算数任务。

Math 对象提供多种算数值类型和函数。无需在使用这个对象之前对它进行定义。

img

注意:

Math 没有构造函数。没有必要先创建一个Math对象。

Math 对象方法

Math对象包含许多用于计算的方法:

img

floor() 方法:

Math.floor(x) 返回小于或等于一个给定数字的最大整数。

Math.floor()向下取整。

random() 方法:

Math.random() 返回 [0,1) 之间的一个随机数:

round 方法:

Math.round() 返回一个数字四舍五入后最接近的整数。

与很多其他语言中的round()函数不同,Math.round()并不总是舍入到远离0的方向(尤其是在负数的小数部分恰好等于0.5的情况下)。

x = Math.round(20.49);   //20
x = Math.round(20.5);    //21
x = Math.round(-20.5);   //-20
x = Math.round(-20.51);  //-21

(5)Date 对象

日期对象用于处理日期和时间。

日期由 年,月,日,时,分,秒和毫秒组成。

使用 new Date() , 将创建一个存储当前日期和时间的日期对象。

var d = new Date();
//d 存储了当前的日期和时间

初始化日期的其他方法允许从指定的日期和时间创建新的日期对象。

new Date(milliseconds) // 毫秒
new Date(dateString) // 日期字符串
new Date(year, month, day, hours, minutes, seconds, milliseconds) //年,月,日,时,分,秒和毫秒

提示: JavaScript日期以1970年01月01日00:00:00世界时(UTC)计算。一天包含 86400000 毫秒。

//Fri Jan 02 1970 08:00:00 GMT+0800 (中国标准时间)
var d1 = new Date(86400000); 
​
//Thu Oct 19 2017 15:56:00 GMT+0800 (中国标准时间)
var d2 = new Date("October 19, 2017 15:56:00");
//Sat Jun 11 1988 11:42:00 GMT+0800 (中国标准时间)
var d3 = new Date(88,5,11,11,42,0,0);

提示: JavaScript计数从0到11的月份。1月是0,12月是11。 日期对象是静态的,而不是动态的。计算机时间正在往前走,但是日期对象一旦创建,日期就不会改变。

Date 方法

当创建一个Date 对象时,有很多方法可以对它进行操作。

img

img

img

实时打印当前时间

function printTime() {
  var d = new Date();
  var hours = d.getHours();
  var mins = d.getMinutes();
  var secs = d.getSeconds();
  document.body.innerHTML = hours+":"+mins+":"+secs;
}
setInterval(printTime, 1000); // setInterval 第二个参数单位是 毫秒

(6)DOM

HTML DOM

通过 HTML DOM,JavaScript 可访问 HTML 文档的所有元素。

HTML DOM (文档对象模型)

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 模型被构造为对象的树:

img

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

  • JavaScript 能够改变页面中的所有 HTML 元素

  • JavaScript 能够改变页面中的所有 HTML 属性

  • JavaScript 能够改变页面中的所有 CSS 样式

  • JavaScript 能够对页面中的所有事件做出反应

DOM 表示文档为树形结构。

HTML 元素成为树中的相关节点。

树中的所有节点之间都有某种关系。

节点可以有子节点。拥有同一父节点的节点称为兄弟节点。

< html>有两个子节点(< head>,< body>);

< head>有一个子节点(< title>)和一个父节点(< html>);

< title>有一个父节点(< head>),没有子节点;

< body>有两个子节点(< h1>和< a>)和一个父节点(< html>);

document 对象

document对象是文档的根节点,window.document属性就指向这个对象。也就是说,只要浏览器开始载入HTML文档,这个对象就开始存在了,可以直接调用。

JavaScript中有一个预定义的 document 对象,可用于访问DOM上的所有元素。

换句话说,文档对象是网页中所有对象的所有者(或根)。

因此,如果要访问HTML页面中的对象,则始终访问 document 对象。

①元素选择

所有HTML元素都是对象。并且我们知道每个对象都有属性和方法。

document 对象具有三种方法最常用于选择HTML元素:

//通过 id 找元素
document.getElementById(id) 
​
//通过 类 找元素
document.getElementsByClassName(name) 
​
//通过 标签 找元素
document.getElementsByTagName(name)

getElementsByClassName() 方法通过类名查找所有元素,并将其作为数组返回。

getElementsByTagName 方法返回指定标签名称的所有元素,作为数组返回。

DOM中的每个元素都有一组属性和方法,它们提供有关它们在DOM中的关系的信息:

element.childNodes 返回一个元素的子节点的数组。

element.firstChild 返回元素的第一个子节点。

element.lastChild 返回元素的最后一个子节点。

element.hasChildNodes 如果元素有任何子节点,则返回 true,否则为 false 。

element.nextSibling 返回相同树级别的下一个节点。

element.previousSibling 返回在同一树级别的上一个节点。

element.parentNode 返回元素的父节点。

②改变属性

选择要使用的元素后,您可以更改其属性。

可以使用JavaScript更改元素的所有属性。

<img id="myimg" src="https://www.w3cschool.cn/attachments/cover/cover_php.jpg" alt="" />
<script>
    var el = document.getElementById("myimg"); // 通过id="myimg"获取元素
    el.src = "https://www.w3cschool.cn/attachments/cover/cover_html.png";
</script>
    <a href="http://www.baidu.com">百度</a>
<script>
    var el = document.getElementsByTagName("a");
    el[0].href = "https://www.w3cschool.cn";
    el[0].innerHTML = "W3Cschool";
</script>

使用元素的 style 对象来访问所有样式属性。

<div id="demo" style="width:200px">一些文本</div>
<script>
  var x = document.getElementById("demo");
  x.style.color = "6600FF";
  x.style.width = "100px";
</script>

所有CSS属性都可以使用JavaScript进行设置和修改。请记住,您不能在属性名称中使用破折号( - ):这些替换为驼峰写法,其中复合词以大写字母开头 比如: background-color属性应该被写为 backgroundColor

③添加/移除/替换元素

element.cloneNode() 克隆元素并返回结果节点。

document.createElement(element) 创建一个新的元素节点。

document.createTextNode(text) 创建一个新的文本节点。

var node = document.createTextNode("一些新的文本");

这将创建一个新的文本节点,但它将不会出现在文档中,直到您使用以下方法之一将其附加到现有元素:

element.appendChild(newNode) 将一个新的子节点添加到元素作为最后一个子节点。

element.insertBefore(node1, node2) 在节点2之前插入node1作为子节点。

例如:

<div id ="demo">一些文本</div>
​
<script>
  //创建一个新的段落
  var p = document.createElement("p");
  var node = document.createTextNode("一些新的文本");
  //添加文本到段落
  p.appendChild(node);
​
  var div = document.getElementById("demo");
  //将段落添加到div中
  div.appendChild(p);
</script>

要删除HTML元素,您必须选择元素的父项并使用 removeChild(node) 方法。

例如:

<div id="demo">
  <p id="p1">这是一个段落.</p>
  <p id="p2">这是另外一个段落.</p>
</div>
​
<script>
var parent = document.getElementById("demo");
var child = document.getElementById("p1");
parent.removeChild(child);
</script>

实现相同结果的另一种方法是使用 parentNode 属性来获取要删除的元素的父项

var child = document.getElementById("p1");
child.parentNode.removeChild(child);

要替换HTML元素,使用 element.replaceChild(newNode,oldNode) 方法。

<div id="demo">
  <p id="p1">这是一个段落</p>
  <p id="p2">这是另一个段落</p>
</div>
​
<script>
var p = document.createElement("p");
var node = document.createTextNode("这是新的文本");
p.appendChild(node);
​
var parent = document.getElementById("demo");
var child = document.getElementById("p1");
parent.replaceChild(p, child);
</script>

23.动画

通过操作元素的属性和样式来实现动画效果,具体的网上搜吧,不写了~

24.事件

JavaScript使我们有能力创建动态页面,网页中的每一个元素都可以产生某些触发JavaScript函数的事件。

我们可以认为事件是可以被JavaScript侦测到的一种行为。

您可以编写事件触发执行的Javascript代码,例如用户单击HTML元素,移动鼠标或提交表单时。

当目标元素发生事件时,执行处理函数。

常见的HTML事件包括:

img

相应的事件可以添加到HTML元素作为属性。

<p id="tip">这边显示提示</p>
​
<h2 id="tip">这边显示提示</h2>
​
<hr>
​
<p onclick="clickfn()">点击我看看</p>
​
<br>
​
<input type="text" onfocus="focusfn()" onblur="blurfn()"  value="获得焦点" />
​
<br><br>
​
<div onmouseover="moverfn()" onmouseout="moutfn()" style="">
​
    鼠标移动进来看看
​
</div>
<button onclick="show()">点击我</button>
<script>
function show() {
  alert("你好,我在这里!");
}
</script>

onchange 事件主要用于文本框。当文本框内的文本发生变化并且焦点从元素中丢失时,调用事件处理程序。

(1)事件监听

可以给元素绑定事件监听:

var x = document.getElementById("demo");
​
x.onclick = function () {
  document.getElementById("date").innerHTML = new Date();
}

addEventListener() 方法将事件处理程序附加到元素,而不会覆盖现有的事件处理程序。您可以向一个元素添加许多事件处理程序。

您还可以将许多同一类型的事件处理程序添加到一个元素,即两个“点击”事件。

element.addEventListener(event, function , useCapture);

第一个参数是事件的类型(如“click”或“mouseover”)。

第二个参数是事件发生时要调用的函数。

第三个参数是一个布尔值,指定是否使用事件冒泡或事件捕获。此参数是可选的,更具体教程的可自行搜索

在添加事件类型的时候没有on, 用的是 click 而不是 onclick

element.addEventListener("click", myFunction);
element.addEventListener("mouseover", myFunction);
​
function myFunction() {
  alert("Hello W3Cschool");
}

删除事件监听

我们可以使用 removeEventListener 删除事件监听:

element.removeEventListener("mouseover", myFunction);

我们创建一个事件处理程序,在执行后会自动删除:

<button id="demo">开始</button>
​
<script>
var btn = document.getElementById("demo");
btn.addEventListener("click", myFunction);
​
function myFunction() {
  alert(Math.random());
  btn.removeEventListener("click", myFunction);
}
</script>

Internet Explorer版本8及更低版本不支持 addEventListener() 和 removeEventListener() 方法。但是,您可以使用 document.attachEvent() 方法在Internet Explorer中附加事件处理程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/422745.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的番茄成熟度检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;开发番茄成熟度检测系统对于提高农业产量和食品加工效率具有重大意义。本篇博客详细介绍了如何利用深度学习构建一个番茄成熟度检测系统&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并结合了YOLOv7、YOLOv6、YOLOv5的对比&…

SpringBoot约定大于配置

什么是约定大于配置 "约定大于配置"&#xff08;Convention Over Configuration&#xff09;是一种理念&#xff0c;旨在通过默认约定和规则来减少开发人员需要做的配置工作。在Spring Boot框架中&#xff0c;这一原则得到了充分应用&#xff0c;帮助开发者更快地构…

300分钟吃透分布式缓存-15讲:如何深入理解、应用及扩展 Twemproxy?

Twemproxy 架构及应用 Twemproxy 是 Twitter 的一个开源架构&#xff0c;它是一个分片资源访问的代理组件。如下图所示&#xff0c;它可以封装资源池的分布及 hash 规则&#xff0c;解决后端部分节点异常后的探测和重连问题&#xff0c;让 client 访问尽可能简单&#xff0c;同…

AI时代,我们需要什么能力?

AI 时代&#xff0c;一定会重构很多行业&#xff0c;也会重构人民的生活工作方式&#xff0c;那么 AI 时代&#xff0c;我们需要培养什么能力呢&#xff1f; 我们应该去做那些 AI 做不了的事情&#xff01;让 AI 成为我们的工具&#xff0c;助力我们更高效的解决问题&#xff…

Java - 获取汉字大写首字母输出

背景 有个项目需要将一批字符串的拼音首字母输出并大写&#xff0c;写了个工具类。 实现 需要引入外部jar。 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version> </dep…

C++之set、multiset

1、set简介 set是一种关联式容器&#xff0c;包含的key值唯一&#xff0c;所有元素都会在插入时自动被排序&#xff0c;其存储结构为红黑树。set只能通过迭代器(iterator)访问。 set和multiset的区别&#xff1a; &#xff08;1&#xff09;set不允许容器中有重复的元素&…

VUE3中的组件传值

一、父传子(props) 在子组件中可以使用defineProps接收父组件向子组件的传值 父组件fatherPage.vue&#xff1a; <template><div class"father"><button click"a a 1">按钮</button><childPage :a"a" /><…

在Windows系统上安装Docker和SteamCMD容器的详细指南有哪些?

在Windows系统上安装Docker和SteamCMD容器的详细指南有哪些&#xff1f; 安装Docker&#xff1a; 首先&#xff0c;需要在Windows操作系统上激活WSL2功能。这是因为Docker作为一个容器工具&#xff0c;依赖于已存在并运行的Linux内核环境。可以通过使用winget来安装Docker。具体…

禁止u盘拷贝的方法,U盘文件防止拷贝的方法

某大型制造企业在研发一款新产品时&#xff0c;涉及到了大量的机密数据和设计图纸。为了方便工作&#xff0c;研发部门的员工经常使用U盘在不同电脑之间传输数据。 然而&#xff0c;由于缺乏对U盘的有效管理&#xff0c;导致了一起严重的数据泄露事件。 事件经过&#xff1a;…

IEEE 802.11a协议

IEEE 802.11 系列协议主要使用了 OFDM 调制技术&#xff0c;是现今局域无线网的通用标准&#xff0c;被广泛应用于 WIFI 通信中&#xff0c;WIFI 版本及其对应的 802.11 协议版本如下&#xff1a; Wi-Fi 1 是 1999 年发布的 802.11b 标准。Wi-Fi 2 是 802.11a 标准&#xff0c…

Vue3_2024_2天【Vue3组合式setup用法及响应式ref和reactive】

第一&#xff1a;浅谈 | 不可不知 1.vue3目录介绍&#xff08;区别Vue2没有的&#xff09; vue3&#xff0c;默认使用ts语言&#xff0c;但是ts一开始无法识别某些文件&#xff0c;这里是系统默认配置&#xff1b; 2.vue2中的入口文件是main.js&#xff0c;而vue3这里的入口文…

【CSS】CSS简介,CSS基础选择器详解

目录 css简介 css语法规范 css代码风格&#xff1a; css选择器的作用 css基础选择器 标签选择器 类选择器 类选择器---多类名 id选择器 id选择器和类选择器的区别&#xff1a; 通配符选择器 总结 ⭐css简介 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称,也…

二级医院云HIS系统,云HIS源码,支持分院HIS,集团HIS

云HIS具有可扩展、易共享、易协同、低成本、体验号、更便捷、易维护的优势&#xff0c;重新定义了数字化医院信息系统&#xff0c;实现数字化医院信息系统的转型升级。云 HIS 系统功能完善&#xff0c;涵盖临床各业务部门&#xff0c;采集、抽提、汇总、存贮、展现所有的临床诊…

【HTML】HTML基础系列文章小小总结,运用标签写出网页!

宇宙级声明&#xff01;这次只运用了一些基础标签&#xff0c;希望不要丑到大家~ 目录 效果预览&#xff1a;​编辑​编辑 点击百度百科 点击图片 点击下载 标签说明 源代码 效果预览&#xff1a; 点击百度百科 点击图片 点击下载 标签说明 标题 加粗文字 下划线 换行 分…

电商小程序10分类管理

目录 1 分类数据源2 搭建功能3 创建变量读取数据4 绑定数据总结 本篇我们介绍一下电商小程序的分类管理功能的开发&#xff0c;先看我们的原型图&#xff1a; 在首页我们是展示了四个分类的内容&#xff0c;采用上边是图标&#xff0c;下边是文字的形式。使用低代码开发&#…

Docker实战——网络通信

目录 一、Docker 容器网络通信的基本原理1、查看 Docker 容器网络&#xff08;1&#xff09;新建一个 Dockerfile文件&#xff0c;内容如下&#xff1a;&#xff08;2&#xff09;使用以下命令创建镜像&#xff08;3&#xff09;基于 debian 的镜像创建一个容器&#xff0c;并进…

每日一类:QLabel深入解析

QLabel是Qt中用于显示文本或图像的控件&#xff0c;属于Qt Widgets模块。它是展示静态内容的理想选择&#xff0c;支持富文本格式&#xff0c;使得文本可以包含不同的字体、颜色和链接。QLabel也可以用来显示图像&#xff0c;包括动态图像。此外&#xff0c;它还支持文本和图像…

源码解析篇 | YOLOv8官方源码项目目录结构解析

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv8是一种目标检测算法&#xff0c;它是YOLO&#xff08;You Only Look Once&#xff09;系列算法的第8个版本。YOLOv8相比于之前的版本&#xff0c;在检测精度和速度上都有所提升&#xff0c;它在各种场景下都表现出色…

Acwing 每日一题 空调 差分 贪心

&#x1f468;‍&#x1f3eb; 空调 &#x1f468;‍&#x1f3eb; 参考题解 import java.util.Scanner;public class Main {static int N (int) 1e5 10;static int[] a new int[N];static int n;public static void main(String[] args){Scanner sc new Scanner(System.…

使用GPTQ进行4位LLM量化

使用GPTQ进行4位LLM量化 最佳脑量化GPTQ算法步骤1:任意顺序洞察步骤2:延迟批量更新第三步:乔尔斯基重塑 用AutoGPTQ量化LLM结论References 权重量化的最新进展使我们能够在消费级硬件上运行大量大型语言模型&#xff0c;例如在RTX 3090 GPU上运行LLaMA-30B模型。这要归功于性能…