JavaScript学习知识点大全(终)

简介: 教程来源 https://app-abdss1rim1oh.appmiaoda.com 系统讲解JS安全实践(XSS/CSRF防护、敏感信息保护)、调试技巧(console高级用法、断点、性能分析)、单元测试(Jest)、Babel转译及Polyfill方案,助你构建健壮、兼容、可维护的前端应用。

十三、安全最佳实践

13.1 XSS 防护

// 错误:直接插入 HTML
element.innerHTML = userInput; // 危险!

// 正确:转义 HTML
function escapeHtml(str) {
    return str
        .replace(/&/g, "&")
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&#39;");
}

element.textContent = userInput; // 自动转义

// 使用 DOMPurify 库
import DOMPurify from "dompurify";
const clean = DOMPurify.sanitize(userInput);
element.innerHTML = clean;

13.2 CSRF 防护

// 使用 CSRF Token
fetch("/api/data", {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "X-CSRF-Token": csrfToken
    },
    credentials: "same-origin" // 携带 Cookie
});

// 设置 Cookie 属性
document.cookie = "sessionId=xxx; SameSite=Strict; Secure; HttpOnly";

13.3 敏感信息保护

// 不在前端存储敏感信息
// 错误:localStorage.setItem("password", "123456");

// 使用 HTTPS
// 避免在 URL 中传递敏感数据
// 错误:https://example.com?password=123

// 使用 Content Security Policy (CSP)
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

// 避免使用 eval()
// 错误:eval(userInput);

// 使用 JSON.parse 替代 eval
const data = JSON.parse(validatedJson);

十四、调试与测试

14.1 调试技巧

// console 方法
console.log("普通日志");
console.error("错误信息");
console.warn("警告信息");
console.info("信息");
console.debug("调试信息");

console.table([
    { name: "张三", age: 25 },
    { name: "李四", age: 30 }
]); // 表格形式

console.group("分组");
console.log("内容1");
console.log("内容2");
console.groupEnd();

console.time("计时");
// 代码块
console.timeEnd("计时"); // 输出执行时间

console.trace(); // 输出调用栈

// 断点调试
debugger; // 代码执行到这里会暂停

// 条件断点
if (condition) {
    debugger;
}

// 性能分析
console.profile("性能分析");
// 要分析的代码
console.profileEnd();

14.2 单元测试

// 使用 Jest 测试
// math.js
export function add(a, b) {
    return a + b;
}

// math.test.js
import { add } from "./math";

test("add 函数应该正确相加", () => {
    expect(add(2, 3)).toBe(5);
    expect(add(-1, 1)).toBe(0);
    expect(add(0, 0)).toBe(0);
});

// 异步测试
test("异步请求应该成功", async () => {
    const data = await fetchData();
    expect(data).toHaveProperty("id");
});

// Mock 函数
const mockFn = jest.fn();
mockFn.mockReturnValue(42);
expect(mockFn()).toBe(42);

十五、浏览器兼容性与构建工具

15.1 Babel 转译

// .babelrc 配置
{
    "presets": [
        ["@babel/preset-env", {
            "targets": "> 0.25%, not dead",
            "useBuiltIns": "usage",
            "corejs": 3
        }]
    ]
}

// 编译前(ES6+)
const arrow = () => console.log("Hello");
const promise = Promise.resolve();

// 编译后(ES5)
var arrow = function arrow() {
    return console.log("Hello");
};
var promise = Promise.resolve();

15.2 Polyfill

// 按需引入 polyfill
import "core-js/stable/array/from";
import "core-js/stable/promise";

// 使用 @babel/preset-env 自动注入
// 检查特性支持
if (!Array.prototype.includes) {
    Array.prototype.includes = function(searchElement) {
        return this.indexOf(searchElement) !== -1;
    };
}

JavaScript 的世界广阔而深邃,愿这系列文章成为你技术之路上的重要参考。持续学习,不断实践,你一定能成为优秀的 JavaScript 开发者!
来源:
https://app-abdss1rim1oh.appmiaoda.com

相关文章
|
2天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
10389 43
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
22天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
23438 121
|
8天前
|
人工智能 JavaScript API
解放双手!OpenClaw Agent Browser全攻略(阿里云+本地部署+免费API+网页自动化场景落地)
“让AI聊聊天、写代码不难,难的是让它自己打开网页、填表单、查数据”——2026年,无数OpenClaw用户被这个痛点困扰。参考文章直击核心:当AI只能“纸上谈兵”,无法实际操控浏览器,就永远成不了真正的“数字员工”。而Agent Browser技能的出现,彻底打破了这一壁垒——它给OpenClaw装上“上网的手和眼睛”,让AI能像真人一样打开网页、点击按钮、填写表单、提取数据,24小时不间断完成网页自动化任务。
2099 5