跳到主要内容
JavaScript 基础知识详解 | 极客日志
JavaScript Node.js 大前端
JavaScript 基础知识详解 综述由AI生成 JavaScript 是一种广泛用于网页开发的客户端脚本语言,具有解释型、面向对象、弱类型等特点。 JavaScript 的基础知识,包括其历史背景、与 Java 的区别、基本语法(变量、数据类型、运算符)、控制语句(选择结构、循环结构)、函数定义与调用、事件处理机制以及内置对象(String、Array、Date、Math)。此外,还涵盖了 HTML DOM 操作(查找元素、修改内容样式)和计时器功能(setTimeout、setInterval),旨在帮助初学者掌握 JavaScript 核心概念并应用于实际开发中。
灰度发布 发布于 2026/3/29 更新于 2026/5/27 29 浏览JavaScript 简介
JavaScript(简称 Js)是当前最流行、应用最广泛的客户端 (网页) 脚本语言,用来在网页中添加动态效果与交互功能,在 web 开发中拥有举足轻重的地位。
JavaScript、HTML、CSS 共同构成网页:
HTML: 用来定义网页内容,例如:标题、正文、图像等;
CSS : 用来修饰网页组件的外观,例如:颜色、大小、位置、背景等等;
JavaScript : 用来实时更新网页内容,例如:从服务器中获取数据并更新到网页中,修改某些标签的样式内容,可以让网页变得生动。
JavaScript 历史
JavaScript 原名 : LiveScript,是由美国网景 (Netscape Communications Corporation) 开发的一种用于对网页操作的脚本语言,LiveScript 也是面向对象的。后来 sun 公司与网景合作更名为 JavaScript。
脚本语言 : 无需编译,可以由某种解释器直接执行 (sql python html css JavaScript),直接由某种解释器 (引擎) 解释执行,逐行从上到下解释执行。
JavaScript 和 Java 完全是两种不同的语言
区别
JavaScript 是嵌入在网页中,对网页进行各种操作的,是一种脚本语言;
Java 是一种后端的高级语言,是需要编译的。
JavaScript 特点
解释型脚本语言 : JavaScript 是一种解释型脚本语言,与 C、C++ 等语言需要先编译再运行不同,使用 JavaScript 编写的代码不需要编译,可以直接运行。
面向对象 : JavaScript 是一种面向对象语言,使用 JavaScript 不仅可以创建对象,也能操作使用已有的对象。
弱类型 : JavaScript 是一种弱类型的编程语言,对使用的数据类型没有严格的要求,例如您可以将一个变量初始化为任意类型,也可以随时改变这个变量的类型。
动态性 : JavaScript 是一种采用事件驱动的脚本语言,它不需要借助 Web 服务器就可以对用户的输入做出响应,例如我们在访问一个网页时,通过鼠标在网页中进行点击或滚动窗口时,通过 JavaScript 可以直接对这些事件做出响应。
跨平台 : JavaScript 不依赖操作系统,在浏览器中就可以运行。因此一个 JavaScript 脚本在编写完成后可以在任意系统上运行,只需要系统上的浏览器支持 JavaScript 即可。
第一个 JavaScript 程序
JavaScript 程序不能独立运行,只能在宿主环境中执行。一般情况下可以把 JavaScript 代码放在网页中,借助浏览器环境来运行。
在 HTML 文档中嵌入 JavaScript 代码
在 HTML 页面中嵌入 JavaScript 脚本需要使用 <script> 标签,我们可以在 <script> 标签中编写 JavaScript 代码,具体步骤如下:
新建 HTML 文档;
在 <head> 标签或者 <body> 标签中插入 <script> 标签;
在 <script> 标签中写 JavaScript 代码。
示例:
<!DOCTYPE html>
<html >
<head >
< = >
meta
charset
"utf-8"
<title >
</title >
<script >
alert ("你好 JavaScript" )
</script >
</head >
<body >
</body >
</html >
注:alert('welcome!'); 提示对话框。
在脚本文件中编写 JavaScript 代码 JavaScript 代码不仅可以放在 HTML 文档中也可以放在 JavaScript 脚本文件中。JavaScript 脚本文件,扩展名是 .js,使用任何文本编辑器都可以编辑。
新建 .js 文本;
打开文本编写 JavaScript 文本 alert("你好");;
保存 JavaScript 文件,并连接 HTML 文档:<script type="text/javascript" src="test.js"></script>;
运行 HTML 文档。
注 : 定义 src 属性的 <script> 标签不应再包含 JavaScript 代码。如果嵌入了代码,则只会下载并执行外部 JavaScript 文件,嵌入代码将被忽略。
JavaScript 代码执行顺序 JavaScript 代码可以写在 HTML 文档 <head> 标签与 <body> 标签中,写在不同标签中的执行顺序不同。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
alert("写在<head>标签中");
</script>
</head>
<body>
<script>
alert("写在<body>标签中");
</script>
</body>
</html>
由效果图可以看出,在 HTML 文档中先执行在 <head> 标签中的 JavaScript 代码,后执行 <body> 标签中的代码。
基本语法
1. 变量
2. 数据类型
数值型 (number): 其中包括整型数和浮点型数。
布尔型 (boolean): 逻辑值,true 或 false。
字符串型:有单个或者多个字符组成的。字符串使用单引号或者双引号来说明的。
undefined 类型:变量没用赋值的情况下默认类型,值为 undefined。
Object 类型
3. 算术运算符 算数运算符用来执行常见的数学运算,例如加法、减法、乘法、除法等。
var x = 10 ; var y = 4 ;
console .log ("x + y =" , x + y);
console .log ("x - y =" , x - y);
console .log ("x * y =" , x * y);
console .log ("x / y =" , x / y);
console .log ("x % y =" , x % y);
var a = "10" ; var b = 5 ; var c = 10 ; var d = "a" ;
4. 赋值运算 var x = 10 ; x += 20 ; console .log (x);
var x = 12 , y = 7 ; x -= y; console .log (x);
x = 5 ; x *= 25 ; console .log (x);
x = 50 ; x /= 10 ; console .log (x);
x = 100 ; x %= 15 ; console .log (x);
5. 字符串运算符 JavaScript 中的 + 和 += 运算符除了可以进行数学运算外,还可以用来拼接字符串。
var x = "Hello " ; var y = "World!" ;
var z = x + y; console .log (z);
x += y; console .log (x);
6. 自增、自减运算符 自增、自减运算符用来对变量的值进行自增 (+1)、自减 (-1) 操作。
var x;
x = 10 ; console .log (++x);
x = 10 ; console .log (x++);
x = 10 ; console .log (--x);
x = 10 ; console .log (x--);
7. 比较运算符 比较运算符会比较左右两侧的数据,最后返回一个布尔值 (true 或者 false)。
var x = 25 ; var y = 35 ; var z = "25" ;
console .log (x == z);
console .log (x === z);
console .log (x != y);
console .log (x !== z);
console .log (x < y);
console .log (x > y);
console .log (x <= y);
console .log (x >= y);
8. 逻辑运算符 逻辑运算符通常来组合多个表达式,逻辑运算符的运算是一个布尔值 (true/false)。
var year = 2021 ;
if ((year % 400 == 0 ) || ((year % 100 != 0 ) && (year % 4 == 0 ))){
console .log (year + " 年是闰年。" );
} else {
console .log (year + " 年是平年。" );
}
9. 条件运算符 JavaScript 还包含了基于某些条件对变量进行赋值的条件运算符。
var result = (条件表达式)?结果 1 :结果 2
当条件成立返回 ? 后的内容,否则返回 : 后的内容。
var c = 1 ; var b = 2 ; var a = c > b ? c : b;
10. 控制语句
选择结构
单一选择结构 (if)
二路选择结构 (if/else)
多路选择结构 (switch)
循环结构
由计数器控制的循环 (for)
在循环的开头测试表达式 (while)
在循环的末尾测试表达式 (do/while)
break continue
JavaScript 中的选择结构和其他语言是相通的也是一样的。
函数
1. 定义函数 function functionName ([arguments ] ) {
javascript statements;
[return expression]
}
function: 表示函数定义的关键字;
functionName: 表示函数名;
arguments: 表示传递给函数的参数列表,各个参数之间用逗号隔开,可以为空;
statements: 表示实现函数功能的函数体;
return expression: 表示函数将返回 expression 的值,同样是可选的语句。
function sayHello (name ){
alert ("Hello " + name);
return 0 ;
}
2. 函数调用
在 <script> 标签中直接调用
在其他函数中调用
通过组件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
function test(text){
alert(text);
}
test("函数在<script>标签中调用");
function a(){
test("函数在其他函数中调用");
}
a();
</script>
</head>
<body>
<input type="button" value="测试" onclick="test('组件调用函数')"/>
</body>
</html>
3. 全局函数
parseInt(arg) 把括号内的内容转换成整数之后的值。如果括号内是字符串,则字符串开头的数字分别转换成整数,如果以字母开头,则返回 'NaN';
parseFloat(arg) 把括号内的字符串转换成浮点数之后的值,字符串开头的数字部分被转换成浮点数,如果以字母开头,则返回'NaN';
typeof (arg) 返回 arg 值的数据类型;
eval(arg) 可运算某个字符串;
alert(String) 可以在浏览器中弹出一个提示框,里面的内容是 String;
console.log(String) 在控制面板上打印 String。
事件 JS 事件(event)是当用户与网页进行交互时发生的事情,例如单击某个链接或按钮,在文本框中输入文本、按下键盘上的某个按键、移动鼠标等等。当事件发生时,您可以使用 JavaScript 中的事件处理程序(也可称为事件监听器)来检测并执行某些特定的程序。
onclick() 鼠标点击时
onblur() 标签失去焦点
onfocus() 标签获得焦点
onmouseover() 鼠标被移到某标签之上
onmouseout() 鼠标从某标签移开
onload() 是在网页加载完毕后触发相应的事件处理程序
onchange() 是指当前标签失去焦点并且标签的内容发生改变时触发事件处理程序
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > </title >
</head >
<body >
<div >
onclick:<input type ="button" value ="onclick" onclick ="test('pink')" />
<br />
onblur:<input type ="text" onblur ="test('red')" />
<br />
onfocus:<input type ="text" onfocus ="test('blue')" />
<br />
onmouseover:<input type ="text" onmouseover = "test('black')" />
<br />
onmouseout:<input type ="text" onmouseout = "test('aqua')" />
<br />
onchange:<input type ="text" onchange = "test('yellow')" />
</div >
<script >
var obj = document .getElementById ("div" );
function test (color ) {
obj.style .backgroundColor = color;
}
</script >
</body >
</html >
内置对象
1. String 字符串
charAt(n): 返回该字符串位于第 n 位的单个字符。
indexOf(char): 返回指定 char 首次出现的位置。
lastIndexOf(char): 跟 indexOf() 相似,不过是从后边开始找。
substring(start,end): 返回原字符串的子字符串,该字符串是原字符串从 start 位置到 end 位置的前一位置的一段。
substr(start,length): 返回原字符串的子字符串,该字符串是原字符串从 start 位置开始,长度为 length 的一段。
split(分隔符字符): 返回一个数组,该数组是从字符串对象中分离开来的,决定了分离的地方,它本身不会包含在所返回的数组中。
var string = new String ("String 字符串 r2323" );
console .log (string.charAt (2 ));
console .log (string.indexOf ('r' ));
console .log (string.lastIndexOf ('r' ));
console .log (string.substring (2 ,5 ));
console .log (string.substr (2 ,3 ));
console .log (string.split ('r' ));
2. Array 数组 数组是值的有序集合,数组中的每个值称为一个元素,每个元素在数组中都有一个数字位置,称为索引,索引从 0 开始,依次递增。在 JavaScript 中,您可以使用 Array 对象定义数组,此外,Array 对象中还提供了各种有关数组的属性和方法。
这样就定义了一个空数组。以后要添加数组元素,就用:
var arr = new Array (, , ...);
var a = new Array ();
a[0 ] = 1 ;
a[1 ] = "aaa" ;
a[5 ] = true ;
var b = new Array (1 ,2 ,3 ,4 ,5 );
var a = [1 ,2 ,3 ,4 ,5 ];
a[5 ] = 3 ;
join(): 返回一个字符串,该字符串把数组中的各个元素串起来,用置于元素与元素之间。
reverse(): 使数组中的元素顺序反过来。如果对数组 [1, 2, 3] 使用这个方法,它将使数组变成:[3, 2, 1]。
sort(): 使数组中的元素按照一定的顺序排列。如果不指定,则按字母顺序排列。
对数字排序需要调用排序函数 。 function sortNumber(a,b){ return a - b; }
var arr = [1 , 11 , 12 , 55 , 66 , 8 , 7 , 9 ];
console .log (arr.join ());
var str = "Hello World" ;
var reversedStr = str.split ("" ).reverse ().join ("" );
console .log (reversedStr);
console .log (arr.sort ());
arr.sort (function (a, b ) { return a - b; });
console .log (arr);
arr.sort (function (a, b ) { return b - a; });
console .log (arr);
3. Date
new Date() 返回当日的日期和时间
getFullYear() 返回四位数字年份
getDate() 返回一个月中的某一天 (1 ~ 31)
getMonth() 返回月份 (0 ~ 11)
getDay() 返回一周中的某一天 (0 ~ 6)
getHours() 返回 Date 对象的小时 (0 ~ 23)
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)
<!DOCTYPE html>
<html >
<head >
<title > </title >
<script >
function addTextToDiv ( ) {
var myDiv = document .getElementById ('myDiv' );
var currentDate = new Date ();
var year = currentDate.getFullYear ();
var month = currentDate.getMonth () + 1 ;
var day = currentDate.getDate ();
var hour = currentDate.getHours ();
var minutes = currentDate.getMinutes ();
var seconds = currentDate.getSeconds ();
myDiv.innerHTML = year + "年" + month + "月" + day + "日 " + hour + ":" + minutes + ":" + seconds;
}
setInterval ("addTextToDiv()" ,1000 );
</script >
</head >
<body onload ="addTextToDiv()" >
<div > </div >
</body >
</html >
4. Math
Math.abs(x) 绝对值计算;
Math.pow(x,y) 数的幂;x 的 y 次幂
Math.sqrt(x) 计算平方根;
Math.ceil(x) 对一个数进行上舍入
Math.floor(x) 对一个数进行下舍入
Math.round(x) 把一个数四舍五入为最接近的整数
Math.random() 返回 0 ~ 1 之间的随机数
Math.max(x,y) 返回 x 和 y 中的最大值
Math.min(x,y) 返回 x 和 y 中的最小值
Html DOM
DOM 是 Document Object Model 文档对象(网页中的标签)模型的缩写。
通过 html dom,可用 JavaScript 操作 html 文档的所有标签。
1. 查找元素 如果我们想对标签进行操作,我们就得找到他们,那我们怎么找到他们呢?
通过 id 找到 HTML 标签 : document.getElementById("id");
通过标签名找到 HTML 标签 : document.getElementsByTagName("p");
通过类名找到 HTML 标签 : document.getElementsByClassName("p");
通过 name 找到 HTML 标签 : document.getElementsByName("name");
2. 改变 HTML Html dom 允许 JavaScript 改变 html 标签的内容。改变 HTML 标签的属性 document.getElementById("username").value="new value";
代码演示:演示代码就让通过 js 修改按钮的 value 值,让按钮的 value 值从测试变到按钮
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > </title >
<script >
function test ( ){
document .getElementById ("button" ).value = "按钮" ;
}
</script >
</head >
<body >
<input type ="button" value ="测试" onclick ="test()" />
</body >
</html >
代码演示:修改图片
document.getElementById("image").src="new.jpg";
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > </title >
<script >
function test ( ){
document .getElementById ("img" ).src = "img/3.jpg" ;
}
</script >
</head >
<body >
<input type ="button" value ="测试" onclick ="test()" />
<img src ="img/1.jpg" />
</body >
</html >
修改 HTML 内容的最简单的方法是使用 innerHTML 属性 document.getElementById("div").innerHTML=new HTML
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > </title >
<script >
function test ( ){
document .getElementById ("div" ).innerHTML = "加油胜利就在前方" ;
}
</script >
</head >
<body >
<input type ="button" value ="测试" onclick ="test()" />
<div > 你好,登山者</div >
</body >
</html >
这里只是举例说明了这几个,我们还有更多的操作,自己动动手,去发现更多吧。
3. 改变 CSS html dom 允许 JavaScript 改变 html 标签的样式。
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > </title >
<script >
function test ( ){
document .getElementById ("div" ).innerHTML = "加油胜利就在前方" ;
}
function color ( ){
document .getElementById ("div" ).style .color = "pink" ;
}
</script >
</head >
<body >
<input type ="button" value ="测试" onclick ="test()" />
<div > 你好,登山者</div >
<input type ="button" value ="修改颜色" onclick ="color()" />
</body >
</html >
这里用一个实例:使一个 div 的背景颜色修改并且循环。
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > </title >
<script >
var color = ['red' ,'green' ,'blue' ];
var i = 0 ;
function test ( ){
var obj1 = document .getElementById ("text" );
var obj2 = document .getElementById ("button" );
obj1.style .backgroundColor = color[i];
i++;
if (i==color.length ){ i=0 ; }
obj2.value = color[i];
}
</script >
</head >
<body >
<div > </div >
<input type ="button" value ="red" onclick ="test()" />
</body >
</html >
计时 通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。
setTimeout("函数","时间") 未来的某时执行代码
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > setTimeout 示例</title >
<script >
function showMessage ( ) {
alert ("这是一个 setTimeout 示例!" );
}
setTimeout ("showMessage()" , 3000 );
</script >
</head >
<body >
<h1 > setTimeout 示例</h1 >
<p > 页面加载后将在 3 秒后显示一条消息。</p >
</body >
</html >
clearTimeout() 取消 setTimeout()
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > setTimeout 和 clearTimeout 示例</title >
<script >
var timeoutID;
function showMessage ( ) {
alert ("这是一个 setTimeout 示例!" );
}
function setupTimeout ( ) {
timeoutID = setTimeout (showMessage, 3000 );
}
function cancelTimeout ( ) {
clearTimeout (timeoutID);
alert ("定时器已取消!" );
}
</script >
</head >
<body >
<h1 > setTimeout 和 clearTimeout 示例</h1 >
<p > 页面加载后将在 3 秒后显示一条消息。</p >
<button onclick ="setupTimeout()" > 设置定时器</button >
<button onclick ="cancelTimeout()" > 取消定时器</button >
</body >
</html >
setInterval("函数","时间") 每隔指定时间重复调用
clearInterval() 取消 setInterval()
<!DOCTYPE html>
<html >
<head >
<meta charset ="utf-8" >
<title > </title >
</head >
<body >
<input type ="text" />
<br />
<br />
<input type ="button" value ="开始" onclick ="startTime()" />
<input type ="button" value ="停止" onclick ="stopTime()" />
<input type ="button" value ="复位" onclick ="fuwei()" />
<script >
var num = 0 ;
var textobj = document .getElementById ("text" );
textobj.value = 0 ;
var index;
function jishi ( ){
num++;
textobj.value = num;
}
function startTime ( ){
index = setInterval ("jishi()" ,1000 );
}
function stopTime ( ){
clearInterval (index);
}
function fuwei ( ){
num = 0 ;
textobj.value = 0 ;
}
</script >
</body >
</html >
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online