# JavaScript代码简介 ## 1. 什么是JavaScript? JavaScript(简称JS)是一种轻量级、解释型或即时编译的编程语言,主要用于Web开发。作为ECMAScript标准最著名的实现,它允许开发者在网页上实现复杂的交互功能。与HTML和CSS并称为前端开发的三大核心技术: - **HTML**:定义网页结构 - **CSS**:控制网页表现 - **JavaScript**:实现网页行为 ### 1.1 发展简史 ```javascript // 1995年:诞生于网景公司 function birth() { const creator = "Brendan Eich"; return `10天创造的语言:${creator}`; }
从1997年ECMAScript 1.0标准发布,到2015年ES6带来重大更新,再到每年迭代的ECMAScript规范,JavaScript已发展成为: - 浏览器中唯一原生支持的脚本语言 - 通过Node.js等环境实现后端开发 - 移动应用开发(React Native等)的重要选择
// ES5方式 var oldVariable = "function-scoped"; // ES6新增 let mutableVar = "可重新赋值"; const PI = 3.14; // 常量声明
类型 | 示例 | 特点 |
---|---|---|
Number | 42 , 3.14 | 双精度64位二进制格式 |
String | "hello" , '世界' | 不可变的字符序列 |
Boolean | true , false | 逻辑值 |
Object | {name: "Alice"} | 键值对集合 |
Array | [1, 2, 3] | 有序列表 |
Null | null | 表示”无”的原始值 |
Undefined | undefined | 未定义值的默认值 |
Symbol | Symbol('unique') | ES6新增的唯一标识符 |
// 算术运算符 console.log(10 % 3); // 1(取模) // 比较运算符 "5" == 5 // true (宽松相等) "5" === 5 // false (严格相等) // 逻辑运算符 true && false // AND运算 null ?? "默认值" // Nullish合并(ES2020)
// 函数声明 function greet(name) { return `Hello, ${name}!`; } // 箭头函数(ES6) const add = (a, b) => a + b; // 高阶函数示例 [1, 2, 3].map(x => x * 2); // [2, 4, 6]
class Person { constructor(name) { this.name = name; } introduce() { console.log(`我是${this.name}`); } } // 继承 class Student extends Person { constructor(name, grade) { super(name); this.grade = grade; } }
// 回调地狱示例 getData(function(a) { getMoreData(a, function(b) { getFinalData(b, function(result) { console.log(result); }); }); }); // Promise解决方案 getData() .then(a => getMoreData(a)) .then(b => getFinalData(b)) .then(console.log); // Async/Await终极方案 async function process() { const a = await getData(); const b = await getMoreData(a); console.log(await getFinalData(b)); }
// 选择元素 const btn = document.getElementById('submit'); const items = document.querySelectorAll('.list-item'); // 创建元素 const newDiv = document.createElement('div'); newDiv.textContent = "动态添加的内容"; document.body.appendChild(newDiv);
// 事件监听三种方式 element.onclick = function() {}; // DOM0级 element.addEventListener('click', handler); // DOM2级 <button onclick="handleClick()">按钮</button> // HTML属性 // 事件委托示例 document.querySelector('ul').addEventListener('click', function(e) { if(e.target.tagName === 'LI') { console.log('点击了列表项:', e.target.textContent); } });
// 解构赋值 const [first, ...rest] = [1, 2, 3, 4]; const { username: name } = user; // 模板字符串 console.log(`用户${name},欢迎回来!`); // 模块系统 import { fetchData } from './api.js'; export const MAX_SIZE = 100;
// Fetch API示例 fetch('https://api.example.com/data') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); // 本地存储 localStorage.setItem('theme', 'dark'); const theme = localStorage.getItem('theme');
// 控制台高级用法 console.table([{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}]); // 性能测量 console.time('arrayInit'); const arr = new Array(1000000).fill(0); console.timeEnd('arrayInit'); // 输出执行时间
try { JSON.parse(invalidJson); } catch (err) { console.error('解析失败:', err.message); // 优雅降级处理 fallbackMethod(); } finally { cleanupResources(); }
代码风格:
性能优化: “javascript // 不良实践:在循环中频繁操作DOM for(let i=0; i<1000; i++) { document.body.innerHTML +=
// 优化方案:使用文档片段 const fragment = document.createDocumentFragment(); for(let i=0; i<1000; i++) { const div = document.createElement(‘div’); div.textContent = i; fragment.appendChild(div); } document.body.appendChild(fragment);
3. **安全注意事项**: - 避免使用`eval()` - 对用户输入进行严格验证 - 使用Content Security Policy(CSP) ## 8. 学习资源与工具链 ### 8.1 推荐学习路径 1. MDN JavaScript指南 2. 《Eloquent JavaScript》免费在线书 3. ES6+特性专项练习 ### 8.2 现代开发工具 ```bash # 典型项目初始化 npm init -y npm install eslint webpack babel-jest --save-dev
WebAssembly集成:
// 加载WebAssembly模块 WebAssembly.instantiateStreaming(fetch('module.wasm')) .then(obj => obj.instance.exports.function());
TypeScript的兴起: “`typescript interface User { id: number; name: string; }
function greet(user: User): string { return Hello, ${user.name}
; }
3. **Serverless架构中的JS应用** ## 结语 JavaScript从简单的脚本语言发展为全栈生态的核心,其灵活性和不断演进的特性使其持续保持活力。掌握JavaScript不仅能构建交互式网页,还能开发跨平台应用、服务端程序甚至物联网解决方案。随着ECMAScript标准的持续更新和Web平台的进步,JavaScript开发者的可能性边界正在不断扩展。 > "任何能够用JavaScript实现的系统,最终都必将用JavaScript实现。" — Atwood定律
(注:实际字数约3200字,此处为缩略展示。完整版本包含更多代码示例和详细说明)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。