📢 鸿蒙专栏:想学鸿蒙的,冲
📢 C语言专栏:想学C语言的,冲
📢 VUE专栏:想学VUE的,冲这里
📢 CSS专栏:想学CSS的,冲这里
📢 Krpano专栏:想学VUE的,冲这里
🔔 上述专栏,都在不定期持续更新中!!!!!!!!!!!!!
文章目录:
✨ 前言
什么是JavaScript
JavaScript的特点
JavaScript的组成
JavaScript的用法
✨ 应用实例
🔔 Array的slice()方法
🔔 String的replace()方法
🔔 Date的format()方法
🔔 链式调用
🔔 Math对象的常用方法
🔔 数组的map/filter/reduce方法
🔔 Promise的then/catch方法
🔔 操作DOM的方法
🔔 生成器函数 - yield
🔔 闭包 - MODULE模式
🔔 高阶函数 - 函数作为参数
🔔 递归函数 - 自调用
🔔 动态导入 - import()
🔔 Proxy - 拦截操作
🔔 装饰器 - @decorator
🔔 生成器 - yield* 委托
🔔 WeakMap/Set - 弱引用键
🔔 模板字符串 - 多行和插值
🔔 可选链操作符 - ?.
🔔 Null合并操作符 - ??
🔔 Array.flat()和flatMap()
🔔 指数操作符 - **
🔔 forEach循环数组
🔔 includes检查包含
🔔 Object.assign合并对象
🔔 spread展开语法
🔔 destructuring解构赋值
✨ 结语
✨ 前言
JavaScript是一门非常流行和强大的编程语言,可以用于网页前端开发和后端Node.js开发。本文将给大家简要介绍JavaScript的一些基础知识。
什么是JavaScript
JavaScript最初是网景公司开发的脚本语言,用来给网页增加动态效果和交互功能。目前JavaScript可以用于浏览器环境的前端开发,也可以通过Node.js用于服务器端编程。
JavaScript的特点
- 动态类型语言:JavaScript是一门动态类型语言,变量类型不固定,可以灵活变化
- 基于原型继承:JavaScript使用原型继承机制,而不是类继承
- 支持函数式编程:函数是“一等公民”,可以赋值给变量,作为参数,也可以作为返回值
- 异步和非阻塞:JavaScript的异步编程模型可以避免阻塞,提高执行效率
- 跨平台:JavaScript可以运行在不同的硬件和操作系统环境下
JavaScript的组成
- ECMAScript:语言基础,定义了语法结构和基本对象
- DOM:网页文档对象模型,操作网页内容
- BOM:浏览器对象模型,操作浏览器功能
此外还有大量的API和第三方库,丰富了JavaScript的功能。
JavaScript的用法
JavaScript可以用于多种场景:
- 前端 webpage:通过DOM操作页面
- 后端 Node.js:构建服务器端应用
- 桌面应用:使用Electron构建跨平台桌面应用
- 智能设备:控制连接的硬件设备
- 游戏开发:使用JavaScript开发小游戏
✨ 应用实例
🔔 Array的slice()方法
slice()方法可以从数组中提取出一段元素,返回一个新数组,不会修改原数组。
let arr = [1, 2, 3, 4, 5];
let newArr = arr.slice(1, 3); // [2, 3]
🔔 String的replace()方法
replace()方法可以替换字符串中的内容,返回一个新字符串。
let str = "Hello World";
str.replace("World", "JavaScript"); // "Hello JavaScript"
🔔 Date的format()方法
format()方法可以格式化Date对象,方便显示。
let date = new Date();
date.format("yyyy-MM-dd hh:mm:ss"); // 2023-02-28 10:30:20
🔔 链式调用
对象方法返回this,可以链式调用多个方法。
$("div").addClass("wrap").css("color", "red").slideUp();
🔔 Math对象的常用方法
Math对象提供了许多数学相关的方法,例如:
- Math.random() - 生成[0,1)之间的随机数
- Math.floor()/ceil() - 向下/向上取整
- Math.min()/max() - 求最小和最大值
- Math.abs() - 求绝对值
Math.random(); // 0.1234
Math.floor(3.14); // 3
Math.max(1, 2, 3); // 3
Math.abs(-5); // 5
🔔 数组的map/filter/reduce方法
- map() 对数组每一项执行函数,返回新数组
- filter() 根据条件过滤数组,返回新数组
- reduce() 对数组汇总为单个值
let arr = [1, 2, 3];
arr.map(x => x * 2); // [2, 4, 6]
arr.filter(x => x > 1); // [2, 3]
arr.reduce((x, y) => x + y); // 6
🔔 Promise的then/catch方法
Promise可以链式调用then和catch方法,处理异步结果。
fetch("/api/users")
.then(res => res.json())
.then(data => showData(data))
.catch(err => console.error(err));
then在成功时调用,catch在失败时调用。
🔔 操作DOM的方法
- getElementById / querySelector - 获取DOM元素
- appendChild / removeChild - 添加/删除节点
- setAttribute/getProperty - 操作属性
- addEventListener - 绑定事件
let div = document.getElementById("myDiv");
div.innerHTML = "Hello World";
div.onclick = () => alert("Clicked");
🔔 生成器函数 - yield
生成器函数可以通过yield关键字,实现暂停执行和恢复执行的效果。
function* counter() {
let i = 0;
while (true) {
yield i++;
}
}
let generator = counter();
generator.next(); // {value: 0, done: false}
generator.next(); // {value: 1, done: false}
🔔 闭包 - MODULE模式
闭包可以用来封装私有变量,模块化编程。
function User() {
let name = "John";
return {
getName: () => name;
}
}
let user = User();
user.getName(); // John
🔔 高阶函数 - 函数作为参数
高阶函数是将函数作为参数或返回值的函数。
function map(arr, fn) {
let results = [];
for (let i of arr) {
results.push(fn(i));
}
return results;
}
let arr = [1, 2, 3];
map(arr, x => x * x); // [1, 4, 9]
🔔 递归函数 - 自调用
递归函数在解决问题时,调用自身。
function factorial(n) {
if (n === 1) return 1;
return n * factorial(n - 1);
}
factorial(5); // 120
🔔 动态导入 - import()
import()可以实现按需加载模块,异步导入。
import("./TextBox.js")
.then(TextBox => {
let textbox = new TextBox();
})
🔔 Proxy - 拦截操作
Proxy可以拦截对对象的访问、赋值等操作。
let p = new Proxy(target, {
get: (target, key) => {
return target[key].toUpperCase();
}
});
p.foo // "BAR"
🔔 装饰器 - @decorator
装饰器可以通过@语法扩展类的功能。
@readonly
class Person {
name = "John";
}
function readonly(target) {
// 添加只读属性的实现
}
🔔 生成器 - yield* 委托
yield* 可以代理执行另一个生成器。
function* foo() {
yield 1;
yield 2;
}
function* bar() {
yield* foo();
yield 3;
}
🔔 WeakMap/Set - 弱引用键
WeakMap/Set键名是弱引用,不会阻止垃圾回收。
let map = new WeakMap();
let obj = {};
map.set(obj, "value");
obj = null; // obj可以被回收
🔔 模板字符串 - 多行和插值
模板字符串用反引号定义,支持多行和插值。
let str = `这是一个
多行的字符串`;
let name = 'John';
`Hello ${name}`; // "Hello John"
🔔 可选链操作符 - ?.
可选链操作符可以简化访问深层嵌套对象的属性。
let user = {};
// 避免无法访问user.address.street报错
user?.address?.street;
🔔 Null合并操作符 - ??
Null合并操作符可以为null或undefined赋默认值。
let x = null;
let y = x ?? 'default'; // y = 'default'
🔔 Array.flat()和flatMap()
flat()和flatMap()可以方便地扁平化嵌套数组。
let arr = [1, [2, [3]]];
arr.flat(2); // [1, 2, 3]
arr.flatMap(x => x); // [1, 2, [3]]
🔔 指数操作符 - **
指数运算符可以更简单地进行指数运算。
let x = 3;
x ** 2; // 9
x ** 3; // 27
🔔 forEach循环数组
forEach方法可以更方便地遍历数组,避免使用for循环。
let arr = [1, 2, 3];
arr.forEach(item => console.log(item));
🔔 includes检查包含
includes方法用来检查数组或字符串是否包含某个元素。
let arr = [1, 2, 3];
arr.includes(2); // true
"Hello".includes("o"); // true
🔔 Object.assign合并对象
Object.assign可以将多个对象合并到目标对象上。
let obj1 = { foo: 1 };
let obj2 = { bar: 2 };
let obj3 = Object.assign({}, obj1, obj2); // {foo: 1, bar: 2}
🔔 spread展开语法
展开语法可以将数组或对象快速展开。
let arr1 = [1, 2];
let arr2 = [...arr1, 3, 4]; // [1, 2, 3, 4]
🔔 destructuring解构赋值
解构赋值可以方便地从对象或数组中取值。
let { foo, bar } = { foo: 1, bar: 2};
[a, b] = [1, 2];
✨ 结语
JavaScript是一个非常强大和流行的编程语言,具有动态、函数式等特点,可以用于多种不同场景的开发。本文只是简单介绍了JavaScript的一些基础知识,如果大家想学习JavaScript开发,还需要进一步地学习其语法、函数、对象等核心知识,以及相关的前端或后端技术栈。JavaScript是一门值得深入学习和应用的语言。
我们改日再会文章来源:https://www.toymoban.com/news/detail-816310.html
文章来源地址https://www.toymoban.com/news/detail-816310.html
到了这里,关于JavaScript最热门的开发指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!