疯狂讲义系列js,探索JavaScript的奥秘,你准备好了吗?

JavaScript

疯狂讲义系列js

目录

1、[什么是JavaScript?](#什么是javascript)

2、[JavaScript的历史](#javascript的历史)

3、[JavaScript的基本语法](#javascript的基本语法)

4、[变量和数据类型](#变量和数据类型)

5、[操作符和表达式](#操作符和表达式)

6、[控制结构](#控制结构)

疯狂讲义系列js

7、[函数](#函数)

8、[数组和对象](#数组和对象)

9、[DOM操作](#dom操作)

10、[事件处理](#事件处理)

11、[异步编程](#异步编程)

12、[模块化开发](#模块化开发)

13、[调试与测试](#调试与测试)

疯狂讲义系列js

14、[最佳实践](#最佳实践)

什么是JavaScript?

JavaScript是一种高级、解释型的编程语言,主要用于在网页中实现动态效果,它最初由Netscape公司于1995年发布,经过多年的发展,已经成为现代Web开发不可或缺的一部分。

JavaScript的历史

JavaScript的诞生可以追溯到1995年,当时由Netscape公司的Brendan Eich设计并实现,最初的版本被命名为Mocha,后来改名为LiveScript,最终定名为JavaScript,自那时起,JavaScript经历了多次重大更新和标准化,目前最新的标准是ECMAScript 2023。

JavaScript的基本语法

注释

单行注释:使用//

多行注释:使用/* ... */

// 这是一个单行注释
/* 这是一个多行注释 */

语句结束

JavaScript中的每条语句通常以分号; 结束,但在某些情况下可以省略。

let x = 10; // 需要分号
let y = 20   // 不需要分号

大小写敏感

JavaScript区分大小写,这意味着myVariablemyvariable 是两个不同的变量。

let myVariable = 10;
let myvariable = 20; // 不同的变量

变量和数据类型

声明变量

可以使用var,let, 或const 来声明变量。

var a = 1; // 旧的方式,作用域为函数级
let b = 2; // 推荐使用,作用域为块级
const c = 3; // 常量,不可重新赋值

数据类型

JavaScript有几种基本的数据类型:

Number: 数字类型,如123,3.14

String: 字符串类型,如"Hello",'World'

Boolean: 布尔类型,如true,false

Undefined: 未定义类型,如undefined

Null: 空值类型,如null

Object: 对象类型,如{}

Symbol: 符号类型,如Symbol('id')

let num = 123;       // Number
let str = "Hello";   // String
let bool = true;     // Boolean
let undef = undefined; // Undefined
let nul = null;      // Null
let obj = {};        // Object
let sym = Symbol();  // Symbol

操作符和表达式

算术操作符

+ (加法), (减法), (乘法),/ (除法),% (取模)

let sum = 1 + 2;    // 3
let difference = 5 3; // 2
let product = 4 * 2; // 8
let quotient = 8 / 2; // 4
let remainder = 7 % 3; // 1

比较操作符

== (相等),!= (不相等),=== (严格相等),!== (严格不相等),>,<,>=,<=

console.log(1 == '1');   // true (非严格相等)
console.log(1 === '1');  // false (严格相等)
console.log(1 != '1');   // false (非严格不相等)
console.log(1 !== '1');  // true (严格不相等)
console.log(2 > 1);      // true
console.log(2 < 1);      // false
console.log(2 >= 2);     // true
console.log(2 <= 1);     // false

逻辑操作符

&& (逻辑与),|| (逻辑或),! (逻辑非)

let a = true;
let b = false;
console.log(a && b); // false
console.log(a || b); // true
console.log(!a);     // false

控制结构

条件语句

if…else

let x = 10;
if (x > 5) {
    console.log("x is greater than 5");
} else if (x === 5) {
    console.log("x is equal to 5");
} else {
    console.log("x is less than 5");
}

switch…case

let fruit = "apple";
switch (fruit) {
    case "banana":
        console.log("Banana");
        break;
    case "apple":
        console.log("Apple");
        break;
    default:
        console.log("Unknown fruit");
}

循环语句

for循环

for (let i = 0; i < 5; i++) {
    console.log(i); // 输出0, 1, 2, 3, 4
}

while循环

let j = 0;
while (j < 5) {
    console.log(j); // 输出0, 1, 2, 3, 4
    j++;
}

do…while循环

let k = 0;
do {
    console.log(k); // 输出0, 1, 2, 3, 4
    k++;
} while (k < 5);

for…in和for…of循环

for…in(遍历对象属性)

let person = {name: "John", age: 30};
for (let key in person) {
    console.log(key + ": " + person[key]); // name: John, age: 30
}

for…of(遍历可迭代对象)

let arr = [1, 2, 3, 4];
for (let value of arr) {
    console.log(value); // 输出1, 2, 3, 4
}

函数

函数声明和表达式

函数声明

function greet() {
    return "Hello, World!";
}

函数表达式

let greet = function() {
    return "Hello, World!";
};

箭头函数(ES6)

let greet = () => "Hello, World!";

参数和返回值

function add(a, b) {
    return a + b; // 返回值
}
let result = add(2, 3); // 调用函数并接收返回值

默认参数值(ES6)

function greet(name = "Guest") {
    return "Hello, " + name;
}
console.log(greet()); // Hello, Guest
console.log(greet("John")); // Hello, John

rest参数(ES6)

function sum(...args) {
    return args.reduce((acc, val) => acc + val, 0); // 求和所有参数值
}
console.log(sum(1, 2, 3)); // 6

数组和对象

数组方法

创建数组

let arr = [1, 2, 3]; // 字面量方式创建数组
let arr2 = new Array(1, 2, 3); // 构造函数方式创建数组

常用方法

push: 添加元素到数组末尾,返回新长度。

pop: 移除数组末尾的元素,返回该元素。

shift: 移除数组开头的元素,返回该元素。

unshift: 添加元素到数组开头,返回新长度。

slice: 提取数组的一部分,返回一个新数组。

splice: 添加或删除数组中的元素。

map: 对数组中的每个元素执行一个函数,返回一个新数组。

filter: 根据条件过滤数组元素,返回一个新数组。

reduce: 对数组中的每个元素执行一个函数,将其结果汇总为单个值。

forEach: 对数组中的每个元素执行一个函数。

find: 根据条件查找第一个匹配的元素。

findIndex: 根据条件查找第一个匹配元素的索引。

includes: 判断数组是否包含某个元素。

indexOf: 查找某个元素在数组中的索引。

join: 将数组元素连接成一个字符串。

concat: 合并两个或多个数组。

reverse: 反转数组中的元素顺序。

sort: 对数组进行排序。

every: 检查数组中的所有元素是否都满足某个条件。

some: 检查数组中的某些元素是否满足某个条件。

flat: 将嵌套的数组“扁平化”一层。

flatMap: 先映射再扁平化。

at: 根据索引获取数组元素。

fill: 用指定值填充数组。

copyWithin: 从数组的一部分复制到同一数组的另一部分。

entries: 返回一个新的Array Iterator对象,该对象包含数组中每个索引的键/值对。

keys: 返回一个新的Array Iterator对象,该对象包含数组中每个索引的键。

values: 返回一个新的Array Iterator对象,该对象包含数组中每个索引的值。

findLast: 根据条件查找最后一个匹配的元素。

findLastIndex: 根据条件查找最后一个匹配元素的索引。

toSorted: 返回一个排序后的新数组。

toReversed: 返回一个反转后的新数组。

toSpliced: 返回一个删除了某些元素后的新数组。

with: 返回一个修改了特定索引后的新数组。

toLocaleString: 返回一个表示对象的本地化字符串。

toString: 返回一个表示对象的字符串。

toSource: 返回一个表示对象的源代码字符串(已废弃)。

hasOwnProperty: 检查对象是否有指定的属性。

isPrototypeOf: 检查对象是否存在于另一个对象的原型链上。

propertyIsEnumerable: 检查对象的属性是否可以枚举。

toJSON: 返回一个表示对象的JSON字符串。

valueOf: 返回对象的原始值。

constructor: 返回创建对象的构造函数。

__defineGetter__: 定义属性的getter方法(已废弃)。

__defineSetter__: 定义属性的setter方法(已废弃)。

__lookupGetter__: 返回属性的getter方法(已废弃)。

__lookupSetter__: 返回属性的setter方法(已废弃)。

__proto__: 返回对象的原型(已废弃)。

length: 返回数组的长度。

Symbol.iterator: 返回一个用于遍历数组的迭代器。

Symbol.unscopables: 返回一个对象,其属性表示在with环境中哪些属性是不可用的。

Symbol.species: 返回一个用于创建派生对象的构造函数。

Symbol.match: 如果对象部署了这个方法,则当执行str.match()时会调用它,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果对象没有部署这个方法,则等同于部署了RegExp的[@@match]方法,如果正则表达式没有g标志,则返回该方法的返回值;否则返回一个迭代器,如果正则表达式没有g标志,则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;否则返回该正则表达式的匹配结果的第一个子匹配项;

以上就是关于“疯狂讲义系列js”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1353557.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-11-22 17:24
下一篇 2024-11-22 17:25

相关推荐

  • 如何实现简单实用的JavaScript tabel切换?

    JavaScript tab切换可以通过以下几种简单实用的方法实现:使用CSS类切换显示/隐藏内容,使用JavaScript改变元素的style.display属性,或者通过修改HTML的innerHTML来动态加载内容。

    2024-12-23
    06
  • 你想知道如何实现一个JavaScript滚动条插件吗?

    “javascript,class ScrollBar {, constructor(container) {, this.container = container;, this.init();, },, init() {, const scrollbar = document.createElement(‘div’);, scrollbar.style.width = ’10px’;, scrollbar.style.background = ‘#ddd’;, scrollbar.style.position = ‘absolute’;, scrollbar.style.right = ‘0’;, scrollbar.style.top = ‘0’;, scrollbar.style.bottom = ‘0’;, this.scrollbar = scrollbar;, this.container.appendChild(this.scrollbar);,, this.handle = document.createElement(‘div’);, this.handle.style.width = ’50px’;, this.handle.style.background = ‘#888’;, this.handle.style.position = ‘absolute’;, this.handle.style.cursor = ‘grab’;, this.handle.style.userSelect = ‘none’;, this.handle.style.height = ’20px’;, this.handle.style.borderRadius = ’10px’;, this.handle.style.marginTop = ‘-10px’;, this.handle.addEventListener(‘mousedown’, this.startDrag.bind(this));, this.scrollbar.appendChild(this.handle);,, this.container.addEventListener(‘scroll’, () =˃ {, const maxScrollTop = this.container.scrollHeight this.container.clientHeight;, const scrollRatio = this.container.scrollTop / maxScrollTop;, this.handle.style.top = ${scrollRatio * (this.container.clientHeight this.handle.offsetHeight)}px;, });,, this.updateHandleSize();, },, startDrag(event) {, event.preventDefault();, const startY = event.clientY;, const startTop = parseInt(this.handle.style.top, 10);, const containerRect = this.container.getBoundingClientRect();, const maxScrollTop = this.container.scrollHeight this.container.clientHeight;, const handleHeight = this.handle.offsetHeight;,, const onMouseMove = (moveEvent) =˃ {, const deltaY = moveEvent.clientY startY;, const newTop = Math.min(Math.max(startTop + deltaY, 0), containerRect.height handleHeight);, const scrollRatio = newTop / (containerRect.height handleHeight);, this.container.scrollTop = scrollRatio * maxScrollTop;, };,, const onMouseUp = () =˃ {, document.removeEventListener(‘mousemove’, onMouseMove);, document.removeEventListener(‘mouseup’, onMouseUp);, };,, document.addEventListener(‘mousemove’, onMouseMove);, document.addEventListener(‘mouseup’, onMouseUp);, },, updateHandleSize() {, const containerHeight = this.container.clientHeight;, const contentHeight = this.container.scrollHeight;, const handleHeight = Math.max((contentHeight / containerHeight) * containerHeight, 30); // Minimum handle height of 30px, this.handle.style.height = ${handleHeight}px;, },},,// 使用示例,const myContainer = document.getElementById(‘myContainer’);,new ScrollBar(myContainer);,“

    2024-12-23
    07
  • 你了解哪些常用的JavaScript静态类?

    当然,这里有一个常用的JavaScript静态类示例:,,“javascript,class MathUtils {, static add(a, b) {, return a + b;, },, static subtract(a, b) {, return a b;, },, static multiply(a, b) {, return a * b;, },, static divide(a, b) {, if (b === 0) throw new Error(“Division by zero”);, return a / b;, },},“

    2024-12-23
    012
  • Famous JS,探索JavaScript在现代Web开发中的卓越地位与应用

    JavaScript 是全球最流行的脚本语言之一,广泛应用于 Web 开发。它支持面向对象、命令式和函数式编程范式,适用于创建动态和交互式的网页。

    2024-12-23
    05

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入