Search K
Appearance
Appearance
📊 SEO元描述:2024年最新JavaScript第一个程序教程,从Hello World开始,详解变量声明、函数定义、DOM操作、事件处理。包含完整代码示例和运行结果,适合JavaScript零基础初学者快速入门编程。
核心关键词:JavaScript第一个程序2024、JavaScript Hello World教程、JavaScript入门实例、JavaScript基础编程、前端编程入门、JavaScript代码示例
长尾关键词:JavaScript怎么写第一个程序、JavaScript Hello World怎么运行、JavaScript入门代码示例、JavaScript编程入门教程、第一次学JavaScript写什么
通过本节JavaScript第一个程序教程,你将系统性掌握:
Hello World程序是编程学习的传统起点,也是JavaScript第一个程序的最佳选择。它简单易懂,能够验证开发环境是否正确配置,让初学者快速获得成就感。
让我们编写你的第一个JavaScript程序:
// 🎉 你的第一个JavaScript程序
console.log("Hello, World!");
console.log("欢迎来到JavaScript的世界!");
console.log("这是我的第一个JavaScript程序");console.log() 是JavaScript的输出函数,用于在控制台显示信息"Hello, World!" 是一个字符串,用双引号或单引号包围; 是语句分隔符(在JavaScript中可选,但建议加上)// 是注释符号,用于添加代码说明node filename.js💡 JavaScript学习建议:建议在浏览器控制台先运行这个程序,立即看到结果会很有成就感!
在Web开发中,JavaScript代码可以通过三种方式添加到HTML页面中,每种方式都有其适用场景和优缺点:
直接在HTML标签中编写JavaScript代码:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>内联JavaScript示例</title>
</head>
<body>
<h1>内联JavaScript示例</h1>
<!-- 🔴 **易错点**:内联JavaScript的问题 -->
<button onclick="alert('按钮被点击了!')">点击我</button>
<button onclick="console.log('控制台输出'); showMessage();">复杂操作</button>
<script>
function showMessage() {
alert("这是来自函数的消息");
}
</script>
</body>
</html>内联JavaScript的问题:
在HTML文档的<script>标签中编写JavaScript:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>内部JavaScript示例</title>
</head>
<body>
<h1>我的第一个JavaScript程序</h1>
<button id="myButton">点击我</button>
<p id="output">这里将显示输出结果</p>
<script>
// 🔴 **重要**:等待DOM加载完成
document.addEventListener('DOMContentLoaded', function() {
// 获取页面元素
const button = document.getElementById('myButton');
const output = document.getElementById('output');
// 添加点击事件
button.addEventListener('click', function() {
// 当前时间
const now = new Date();
const timeString = now.toLocaleString();
// 更新页面内容
output.innerHTML = `
<strong>Hello, JavaScript!</strong><br>
当前时间: ${timeString}<br>
按钮被点击了!
`;
// 控制台输出
console.log('用户点击了按钮,时间:', timeString);
});
// 页面加载时的欢迎消息
console.log('🎉 JavaScript程序已启动!');
console.log('🕐 页面加载时间:', new Date().toLocaleString());
});
</script>
</body>
</html>将JavaScript代码保存在独立的.js文件中:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>外部JavaScript示例</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>🚀 我的JavaScript应用</h1>
<div class="user-input">
<input type="text" id="nameInput" placeholder="请输入你的名字">
<button id="greetButton">打招呼</button>
</div>
<div id="greetingOutput" class="output"></div>
<div class="features">
<h2>功能测试</h2>
<button id="timeButton">显示当前时间</button>
<button id="randomButton">生成随机数</button>
<button id="clearButton">清空输出</button>
</div>
<div id="featureOutput" class="output"></div>
</div>
<!-- 🔴 **重要**:script标签的位置 -->
<script src="script.js"></script>
</body>
</html>/* 基本样式,让我们的程序更美观 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Arial', sans-serif;
background: linear-gradient(135deg, #74b9ff, #0984e3);
min-height: 100vh;
padding: 20px;
}
.container {
max-width: 600px;
margin: 0 auto;
background: white;
border-radius: 15px;
padding: 30px;
box-shadow: 0 10px 30px rgba(0,0,0,0.2);
}
h1 {
text-align: center;
color: #333;
margin-bottom: 30px;
}
.user-input {
display: flex;
gap: 10px;
margin-bottom: 20px;
}
input {
flex: 1;
padding: 12px;
border: 2px solid #ddd;
border-radius: 8px;
font-size: 16px;
}
button {
padding: 12px 20px;
border: none;
border-radius: 8px;
background: #74b9ff;
color: white;
cursor: pointer;
font-size: 16px;
transition: background 0.3s;
}
button:hover {
background: #0984e3;
}
.features {
margin: 30px 0;
}
.features h2 {
margin-bottom: 15px;
color: #333;
}
.features button {
margin: 5px;
background: #00b894;
}
.features button:hover {
background: #00a085;
}
.output {
min-height: 60px;
padding: 15px;
background: #f8f9fa;
border-radius: 8px;
margin: 15px 0;
border-left: 4px solid #74b9ff;
}// script.js - 我们的第一个完整JavaScript程序
// 🔴 **重要概念**:立即执行函数,避免全局污染
(function() {
'use strict'; // 启用严格模式
// 程序启动时的欢迎信息
console.log('🎯 JavaScript程序启动!');
console.log('📅 启动时间:', new Date().toLocaleString());
// 等待DOM加载完成
document.addEventListener('DOMContentLoaded', function() {
console.log('📄 DOM加载完成,开始初始化...');
// 初始化应用
initializeApp();
});
// 🔴 **重要功能**:初始化应用程序
function initializeApp() {
// 获取页面元素
const nameInput = document.getElementById('nameInput');
const greetButton = document.getElementById('greetButton');
const greetingOutput = document.getElementById('greetingOutput');
const timeButton = document.getElementById('timeButton');
const randomButton = document.getElementById('randomButton');
const clearButton = document.getElementById('clearButton');
const featureOutput = document.getElementById('featureOutput');
// 🔴 **事件绑定**:为按钮添加功能
greetButton.addEventListener('click', handleGreeting);
timeButton.addEventListener('click', showCurrentTime);
randomButton.addEventListener('click', generateRandomNumber);
clearButton.addEventListener('click', clearOutputs);
// 为输入框添加回车事件
nameInput.addEventListener('keypress', function(event) {
if (event.key === 'Enter') {
handleGreeting();
}
});
console.log('✅ 应用初始化完成!');
// 显示欢迎消息
displayWelcomeMessage();
}
// 处理打招呼功能
function handleGreeting() {
const nameInput = document.getElementById('nameInput');
const greetingOutput = document.getElementById('greetingOutput');
const userName = nameInput.value.trim();
if (userName === '') {
// 🔴 **用户体验**:友好的错误提示
greetingOutput.innerHTML = `
<p style="color: #e74c3c;">
⚠️ 请先输入你的名字哦!
</p>
`;
nameInput.focus(); // 重新聚焦到输入框
return;
}
// 生成个性化问候语
const greetings = [
`你好,${userName}!欢迎学习JavaScript!`,
`嗨,${userName}!今天学习愉快!`,
`Hello,${userName}!Let's code together!`,
`${userName},你好!准备好探索JavaScript的奇妙世界了吗?`
];
const randomGreeting = greetings[Math.floor(Math.random() * greetings.length)];
greetingOutput.innerHTML = `
<h3>🎉 ${randomGreeting}</h3>
<p>输入时间: ${new Date().toLocaleString()}</p>
`;
// 控制台日志
console.log(`👋 用户 "${userName}" 获得了问候`);
// 清空输入框
nameInput.value = '';
}
// 显示当前时间
function showCurrentTime() {
const featureOutput = document.getElementById('featureOutput');
const now = new Date();
featureOutput.innerHTML = `
<h3>🕐 当前时间信息</h3>
<p><strong>完整时间:</strong> ${now.toLocaleString()}</p>
<p><strong>日期:</strong> ${now.toLocaleDateString()}</p>
<p><strong>时间:</strong> ${now.toLocaleTimeString()}</p>
<p><strong>时间戳:</strong> ${now.getTime()}</p>
`;
console.log('🕐 显示时间功能被调用');
}
// 生成随机数
function generateRandomNumber() {
const featureOutput = document.getElementById('featureOutput');
// 生成多种随机数
const randomInt = Math.floor(Math.random() * 100) + 1; // 1-100的整数
const randomFloat = Math.random().toFixed(4); // 4位小数
const randomColor = '#' + Math.floor(Math.random()*16777215).toString(16); // 随机颜色
featureOutput.innerHTML = `
<h3>🎲 随机数生成结果</h3>
<p><strong>随机整数 (1-100):</strong> ${randomInt}</p>
<p><strong>随机小数 (0-1):</strong> ${randomFloat}</p>
<p><strong>随机颜色:</strong> <span style="color: ${randomColor}; font-weight: bold;">${randomColor}</span></p>
<div style="width: 50px; height: 50px; background-color: ${randomColor}; border: 1px solid #ccc; margin-top: 10px;"></div>
`;
console.log(`🎲 生成随机数: 整数=${randomInt}, 小数=${randomFloat}, 颜色=${randomColor}`);
}
// 清空输出
function clearOutputs() {
const greetingOutput = document.getElementById('greetingOutput');
const featureOutput = document.getElementById('featureOutput');
greetingOutput.innerHTML = '<p style="color: #888;">输出已清空</p>';
featureOutput.innerHTML = '<p style="color: #888;">输出已清空</p>';
console.log('🧹 输出区域已清空');
}
// 显示欢迎消息
function displayWelcomeMessage() {
const greetingOutput = document.getElementById('greetingOutput');
greetingOutput.innerHTML = `
<h3>👋 欢迎使用JavaScript程序!</h3>
<p>这是我们的第一个完整的JavaScript应用程序。</p>
<p>请在上方输入框中输入你的名字,然后点击"打招呼"按钮。</p>
`;
}
})(); // 立即执行函数结束
// 🔴 **重要提示**:全局作用域中的代码
console.log('📝 这行代码在全局作用域中执行');
// 演示JavaScript的基本特性
console.group('🧪 JavaScript基本特性演示');
console.log('✅ 变量声明:', typeof let !== 'undefined');
console.log('✅ 箭头函数:', typeof (() => {}) === 'function');
console.log('✅ 模板字符串:', `Hello ${'World'}!`);
console.log('✅ 解构赋值:', ...[1, 2, 3]);
console.groupEnd();<!-- ❌ 错误示例:script在head中,DOM还没加载 -->
<!DOCTYPE html>
<html>
<head>
<script>
// 这时候DOM还没加载,找不到元素!
const button = document.getElementById('myButton'); // null
console.log(button); // null
</script>
</head>
<body>
<button id="myButton">按钮</button>
</body>
</html><!DOCTYPE html>
<html>
<head>
<title>正确的script位置</title>
</head>
<body>
<button id="myButton">按钮</button>
<!-- ✅ 正确:DOM已经加载,可以直接操作 -->
<script>
const button = document.getElementById('myButton'); // 找到了!
console.log(button); // <button id="myButton">按钮</button>
</script>
</body>
</html><!DOCTYPE html>
<html>
<head>
<script>
// ✅ 正确:等待DOM加载完成
document.addEventListener('DOMContentLoaded', function() {
const button = document.getElementById('myButton'); // 找到了!
console.log(button);
});
</script>
</head>
<body>
<button id="myButton">按钮</button>
</body>
</html><!DOCTYPE html>
<html>
<head>
<!-- ✅ defer属性:等DOM解析完成后执行 -->
<script src="script.js" defer></script>
</head>
<body>
<button id="myButton">按钮</button>
</body>
</html><!-- 1. 正常加载(阻塞) -->
<script src="script.js"></script>
<!-- 2. 异步加载(不阻塞,加载完立即执行) -->
<script src="script.js" async></script>
<!-- 3. 延迟加载(不阻塞,DOM解析完后执行) -->
<script src="script.js" defer></script>| 属性 | 下载时机 | 执行时机 | 阻塞解析 | 执行顺序 |
|---|---|---|---|---|
| 无 | 立即 | 立即 | 是 | 按顺序 |
| async | 立即 | 下载完立即执行 | 否 | 不保证顺序 |
| defer | 立即 | DOM解析完后 | 否 | 按顺序 |
// 浏览器特有的全局对象和API
console.log('当前URL:', window.location.href);
console.log('用户代理:', navigator.userAgent);
console.log('屏幕尺寸:', screen.width + 'x' + screen.height);
// DOM操作(只在浏览器中可用)
document.title = '我的JavaScript程序';
// 浏览器API示例
if ('geolocation' in navigator) {
console.log('✅ 支持地理位置API');
} else {
console.log('❌ 不支持地理位置API');
}创建 node-example.js 文件:
// Node.js环境示例
console.log('🚀 在Node.js环境中运行JavaScript');
// Node.js特有的全局对象
console.log('Node.js版本:', process.version);
console.log('当前工作目录:', process.cwd());
console.log('命令行参数:', process.argv);
// 文件系统操作(Node.js特有)
const fs = require('fs');
const path = require('path');
// 读取当前目录
try {
const files = fs.readdirSync('./');
console.log('当前目录的文件:');
files.forEach(file => {
const stats = fs.statSync(file);
console.log(` ${file} (${stats.isDirectory() ? '目录' : '文件'})`);
});
} catch (error) {
console.error('读取目录失败:', error.message);
}
// 创建一个简单的文件
const content = `Hello from Node.js!
生成时间: ${new Date().toLocaleString()}
Node.js版本: ${process.version}
`;
fs.writeFileSync('hello-node.txt', content);
console.log('✅ 文件 hello-node.txt 创建成功!');
// 简单的HTTP服务器
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
res.end(`
<h1>🎉 Node.js HTTP服务器</h1>
<p>当前时间: ${new Date().toLocaleString()}</p>
<p>请求URL: ${req.url}</p>
<p>这是在Node.js环境中运行的JavaScript!</p>
`);
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`🌐 HTTP服务器运行在 http://localhost:${PORT}`);
});运行方式:
# 运行Node.js程序
node node-example.js
# 然后访问 http://localhost:3000// 直接在控制台中尝试这些代码
// 基本计算
2 + 2 * 3 // 8
Math.PI // 3.141592653589793
Math.random() // 随机数
// 字符串操作
"Hello".toUpperCase() // "HELLO"
"World".length // 5
"JavaScript".slice(0, 4) // "Java"
// 数组操作
[1, 2, 3].map(x => x * 2) // [2, 4, 6]
[1, 2, 3, 4, 5].filter(x => x > 3) // [4, 5]
// 对象操作
const person = {name: "张三", age: 25};
person.name // "张三"
Object.keys(person) // ["name", "age"]my-js-project/
├── index.html # 主页面
├── css/
│ └── style.css # 样式文件
├── js/
│ ├── main.js # 主要JavaScript文件
│ └── utils.js # 工具函数
└── assets/
└── images/ # 图片资源// main.js - 推荐的代码结构
(function() {
'use strict';
// 1. 常量定义
const APP_NAME = 'My JavaScript App';
const VERSION = '1.0.0';
// 2. 变量声明
let currentUser = null;
let isInitialized = false;
// 3. 初始化函数
function init() {
console.log(`🚀 ${APP_NAME} v${VERSION} 启动中...`);
// 检查浏览器兼容性
if (!checkCompatibility()) {
console.error('❌ 浏览器不兼容');
return;
}
// 绑定事件
bindEvents();
// 标记为已初始化
isInitialized = true;
console.log('✅ 应用初始化完成');
}
// 4. 工具函数
function checkCompatibility() {
// 检查必要的API
return (
typeof console !== 'undefined' &&
typeof document !== 'undefined' &&
typeof addEventListener !== 'undefined'
);
}
function bindEvents() {
// 绑定事件监听器
document.addEventListener('click', handleDocumentClick);
window.addEventListener('resize', handleWindowResize);
}
// 5. 事件处理函数
function handleDocumentClick(event) {
console.log('点击事件:', event.target);
}
function handleWindowResize() {
console.log('窗口大小变化:', window.innerWidth + 'x' + window.innerHeight);
}
// 6. 程序启动
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();// ❌ 错误:缺少引号
console.log(Hello World);
// ✅ 正确:字符串需要引号
console.log("Hello World");
// ❌ 错误:括号不匹配
function test() {
console.log("test";
}
// ✅ 正确:括号匹配
function test() {
console.log("test");
}// ❌ 错误:变量未定义
console.log(myVariable);
// ✅ 正确:先定义变量
let myVariable = "Hello";
console.log(myVariable);// ❌ 错误:null没有length属性
let text = null;
console.log(text.length);
// ✅ 正确:检查null值
let text = null;
if (text !== null) {
console.log(text.length);
}// 1. 使用console.log调试
function calculateSum(a, b) {
console.log('输入参数:', a, b); // 调试输出
const result = a + b;
console.log('计算结果:', result); // 调试输出
return result;
}
// 2. 使用console.table显示复杂数据
const users = [
{name: '张三', age: 25, city: '北京'},
{name: '李四', age: 30, city: '上海'}
];
console.table(users);
// 3. 使用console.group组织输出
console.group('用户信息处理');
console.log('开始处理用户数据');
console.log('用户数量:', users.length);
console.groupEnd();
// 4. 使用debugger语句
function complexFunction() {
let x = 10;
debugger; // 浏览器会在这里暂停
let y = x * 2;
return y;
}通过本节JavaScript第一个程序教程的学习,你已经掌握:
A: 建议从Hello World开始,然后逐步添加变量、函数、用户交互等功能,循序渐进地学习。
A: 建议放在</body>标签前,或者使用DOMContentLoaded事件确保DOM加载完成后再执行。
A: 常见原因:1)语法错误 2)script标签位置不当 3)文件路径错误 4)浏览器缓存问题。
A: 在浏览器开发者工具的Console标签页,或者Node.js的终端窗口中查看。
A: 内联写在HTML标签中,内部写在<script>标签内,外部写在独立的.js文件中。推荐使用外部方式。
// ❌ 错误示例
console.log("Hello World" // 缺少右括号
// ✅ 正确写法
console.log("Hello World");// ❌ 错误示例
console.log(userName); // userName未定义
// ✅ 正确写法
let userName = "张三";
console.log(userName);// ❌ 错误示例(DOM未加载完成)
document.getElementById('myButton').onclick = function() {
alert('点击了');
};
// ✅ 正确写法
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('myButton').onclick = function() {
alert('点击了');
};
});"编程之路千里始于足下,第一个程序虽然简单,但它是你成为JavaScript专家的第一步!继续加油,下一节我们将学习JavaScript的代码规范与注释。"