Java Script
输出语句
document.write()
:将内容写入html文档console.log()
:将内容写入控制台alert()
:弹窗
变量
JS是弱类型语言,变量无类型
- var:全局变量,可重复声明
- let:局部变量,不可重复声明
- const:常量,不可重复声明
数据类型
number
:数字。整数、浮点数、NaNstring
:字符串。- 单引号:
'Hello'
- 双引号:
"Hello"
- 模板字符串:使用反引号
`Hello ${name}`
- 单引号:
boolean
:布尔值。object
:对象。- 数组:
[1, 2, 3]
- 函数:
function() {}
或箭头函数() => {}
- 日期:
new Date()
- 正则表达式:
/abc/
- 数组:
null
:空值。- 用于表示空对象引用。
undefined
:未定义。- 表示变量未初始化。
- 函数未返回值时默认返回undefined。
使用typeof运算符可以判断变量的数据类型。
运算符
- 算术运算符:
+
,-
,*
,/
,%
- 赋值运算符:
=
,+=
,-=
,*=
,/=
- 比较运算符:
==
,===
,!=
,!==
,<
,>
,<=
,>=
==
:值相等,不考虑类型。===
:值相等,且类型相同。!=
:值不相等。!==
:值不相等,或类型不同。
var age=18; var age1="18"; alert(age == age1); // true, 因为值相等 alert(age === age1); // false, 因为类型不相等 alert(age != age1); // false, 因为值相等 alert(age !== age1); // true, 因为类型不相等
- 逻辑运算符:
&&
,||
,!
- 位运算符:
&
,|
,^
,~
,<<
,>>
,>>>
- 三元运算符:
condition ? expr1 : expr2
类型转换
- String转换成数字
Number()
:将字符串转换为数字。parseInt()
:将字符串转换为整数。parseFloat()
:将字符串转换为浮点数。- 若字符串非数字,转换结果为NaN。
var str1 = "123"; var str2 = "12A3"; var str3 = "A123"; var str4 = "12.3"; var num = Number(str1); // 123 alert(num); // 输出 "123" num = parseInt(str2); // 12 alert( num); // 输出 "12" num = parseInt(str3); // NaN alert( num); // 输出 "NaN" num = parseFloat(str4); // 12.3 alert( num); // 输出 "12.3" num = parseInt(str4); // 12 alert(num); // 输出 "12"
+
:将字符串转换为数字。例:
var str = "12.3"; var num = +str; // 12.3 alert(typeof num); // 输出 "number"
- Number转换成字符串
toString()
:将数字转换为字符串。String()
:将数字转换为字符串。
- 其他类型转换成boolean
Boolean()
:将其他类型转换为布尔值。!!
:将其他类型转换为布尔值。Number
:0和NaN为false,其余为trueString
:空字符串为false,其余为truenull
和undefined
:均转为false
var num = 123; var str = "12.3"; var bool = true; var obj = { name: "张三" }; alert(Boolean(num)); // 输出 "true" alert(Boolean(str)); // 输出 "true" alert(Boolean(bool)); // 输出 "true" alert(Boolean(obj)); // 输出 "true" alert(Boolean(null)); // 输出 "false" alert(Boolean(undefined)); // 输出 "false"
流程控制语句
用法与Java
相同
函数
- 声明函数
function functionName(parameters) { // 函数体 }
- 表达式函数
const functionName = function(parameters) { // 函数体 };
- 箭头函数
const functionName = (parameters) => { // 函数体 };
- 函数参数
- 默认参数:在函数定义时为参数设置默认值。
function greet(name = "Guest") { console.log(`Hello, ${name}!`); } greet(); // 输出 "Hello, Guest!" greet("Alice"); // 输出 "Hello, Alice!"
- 剩余参数:使用
...
表示剩余参数,将剩余参数收集为数组。
function sum(a, b, ...rest) { console.log(a, b, rest); } sum(1, 2, 3, 4, 5); // 输出 "1 2 [3, 4, 5]"
- 展开运算符:使用
...
将数组展开为单独的参数。
function sum(a, b, c) { console.log(a, b, c); } const arr = [1, 2, 3]; sum(...arr); // 输出 "1 2 3"
- 函数参数解构:使用
{}
解构参数。
function printPerson({ name, age }) { console.log(`Name: ${name}, Age: ${age}`); } const person = { name: "张三", age: 18 }; printPerson(person); // 输出 "Name: 张三, Age: 18"
对象
数组对象
- 创建数组
//方法一 var arr1 = new Array(1,2,3); //方法二 var arr2 = [1, 2, 3]; console.log(arr1[0]);
- 数组的特点
- 数组的长度可以动态改变。
- 数组可以存储不同类型的数据。
arr1.length=5; arr1[4]='A'; console.log(arr1);
length
属性会获得数组的长度
未赋值的索引的元素值为undefined
- 数组方法
push()
:向数组末尾添加元素。pop()
:删除数组末尾元素。
//push var arr1 = [1, 2, 3, 4, 5]; arr1.push('A'); console.log(arr1); // 输出 [1, 2, 3, 4, 5, 'A'] //pop arr1.pop(); console.log(arr1); // 输出 [1, 2, 3, 4, 5]
unshift()
:向数组开头添加元素。shift()
:删除数组开头元素。
//unshift var arr1 = [1, 2, 3, 4, 5]; arr1.unshift('A'); console.log(arr1); // 输出 ['A', 1, 2, 3, 4, 5] //shift arr1.shift(); console.log(arr1); // 输出 [1, 2, 3, 4, 5]
slice()
:提取数组的一部分。
var arr1 = [1, 2, 3, 4, 5]; var newArr = arr1.slice(1, 4); // 从索引1开始提取到索引4(不包含) console.log(newArr); // 输出 [2, 3, 4]
splice(Index, DeleteCount)
:删除、替换或添加数组元素。
arr1.splice(1,2); // 从索引1开始删除2个元素 console.log(arr1); // 输出 [1, 3, 4, 'A'] arr1.splice(1,0,'B'); // 在索引1处插入'B' console.log(arr1); // 输出 [1, 'B', 3, 4, 'A']
forEach(function(item,index,arr))
:遍历数组有值的元素,不会遍历未赋值的元素。每遍历一个元素,会调用一次函数。
arr1.forEach(function(item){ console.log(item); })
map()
:创建新数组,每个元素都是调用函数后的结果。
var newArr = arr1.map(function(item) { return item * 2; // 每个元素乘以2 }); console.log(newArr); // 输出 [2, 6, 8, 'A']
字符串
- 创建字符串
//方法一 var str1 = new String('123'); //方法二 var str2 = '123'; console.log(str1);
- 字符串的属性
length
:字符串的长度- 字符串是不可变的,不能改变字符串的长度或特定索引的字符。
- 字符串方法
charAt(index)
:返回指定索引的字符。
var str2 = '123'; console.log(str2.charAt(1)); // 输出 '2'
indexOf(substring)
:返回匹配到第一个子字符串的索引。
var str2 = '123'; console.log(str2.indexOf('23')); // 输出 1
lastIndexOf(substring)
:返回匹配的最后一个子字符串的索引。
var str2 = '12323'; console.log(str2.lastIndexOf('23')); // 输出 3
substring(start, end)
:返回子字符串。
var str2 = '123'; console.log(str2.substring(1, 3)); // 输出 '23'
slice(start, end)
:返回子字符串。
var str2 = '123'; console.log(str2.slice(1, 3)); // 输出 '23'
replace(search, replacement)
:替换字符串中的子字符串。
var str2 = '123'; console.log(str2.replace('23', '45')); // 输出 '145'
split(separator)
:将字符串拆分为数组。
var str2 = '123'; console.log(str2.split('')); // 输出 ['1', '2', '3']
trim()
:删除字符串开头和结尾的空格。
var str2 = ' 123 '; console.log(str2.trim()); // 输出 '123'
JSON
自定义对象:
var person = {
name: "张三",
age: 18,
sayName: function() {
console.log("我的名字是:" + this.name);
}
/*或
sayName() {
console.log("我的名字是:" + this.name);
}
*/
};
alert(person.name); // 输出 "张三"
person.sayName(); // 输出 "我的名字是:张三"
JSON对象
- 定义
- JSON是一种轻量级的数据交换格式,用于在不同系统之间传递数据。
- JSON数据在语法上是JavaScript对象的子集,但是JSON数据是字符串格式,不能直接使用。
- JSON格式
- JSON数据由键值对组成,键值对之间用逗号隔开。
- 键必须是字符串,值可以是字符串、数字、布尔值、数组、对象或null。
- 键值对用冒号隔开。
- 数组用方括号括起来。
- 对象用花括号括起来。
var jsonObj = { "name": "张三", "age": 18, "isStudent": false, "courses": ["数学", "英语"], "address": { "city": "北京", "zipCode": "100000" } };
- JSON解析
JSON.parse(jsonString)
:将JSON字符串解析为JavaScript对象。
var jsonString = '{"name":"张三","age":18,"isStudent":false}'; var obj = JSON.parse(jsonString); console.log(obj.name); // 输出 张三
JSON.stringify(obj)
:将JavaScript对象转换为JSON字符串。
var obj = {name: "张三", age: 18, isStudent: false}; var jsonString = JSON.stringify(obj); console.log(jsonString); // 输出 {"name":"张三","age":18,"isStudent":false}
BOM
BOM(Browser Object Model)是浏览器对象模型,用于操作浏览器窗口和文档。
window对象
window
对象是BOM的核心,代表浏览器窗口。
window
对象包含浏览器窗口的属性和方法。window
对象的属性和方法可以直接调用,不需要使用window
前缀。
- 常用属性:
window.location
:获取或设置当前文档的URL。window.history
:访问浏览器历史记录。window.navigator
:获取浏览器信息。
- 常用方法:
window.alert(message)
:显示警告信息。window.prompt(message, defaultValue)
:显示输入对话框。window.confirm(message)
:显示确认对话框,确认返回true,取消返回false。window.open(url, windowName, features)
:打开新窗口。window.close()
:关闭当前窗口。window.setTimeout(function, delay)
:设置定时器,在指定时间后执行函数,执行一次。
setTimeout(function() {
console.log('定时器执行');
}, 2000); // 2000毫秒后执行
window.setInterval(function, delay)
:设置重复定时器,在指定时间间隔后重复执行函数。
setInterval(function() {
console.log('定时器执行');
}, 1000); // 每1000毫秒执行一次
Location对象
Location
对象表示地址栏。
location.href
:获取或设置当前文档的URL。
alert(location.href); // 输出当前URL
location.href = 'https://www.example.com'; // 跳转到新URL
DOM
DOM(Document Object Model)是文档对象模型,用于操作文档的内容。
- 获取DOM元素:
document.getElementById(id)
:根据ID获取元素。
<div id="myElement">Hello World</div>
<script>
var element = document.getElementById('myElement');
console.log(element); // 输出 <div id="myElement">Hello World</div>
</script>
document.getElementsByClassName(className)
:根据类名获取元素集合,返回所有类名相同的元素。
<div class="myClass">Hello World</div>
<script>
var elements = document.getElementsByClassName('myClass');
console.log(elements); // 输出 <div class="myClass">Hello World</div>
</script>
document.getElementsByTagName(tagName)
:根据标签名获取元素集合,返回所有标签名相同的元素。
<div class="myClass">Hello World</div>
<script>
var elements = document.getElementsByTagName('div');
console.log(elements); // 输出 <div class="myClass">Hello World</div>
</script>
document.getElementsByName(name)
:根据元素的name属性获取元素集合,返回所有name属性相同的元素。
<div class="myClass">Hello World</div>
<script>
var elements = document.getElementsByName('div');
console.log(elements); // 输出 <div class="myClass">Hello World</div>
</script>
- 操作DOM元素:
获取div
元素的内容:
element.innerHTML
:获取或设置元素的HTML内容。element.textContent
:获取或设置元素的文本内容。
<div class="myClass">Hello World</div>
<script>
var element = document.getElementsByClassName('myClass')[0];
console.log(element.innerHTML); // 输出 Hello World
console.log(element.textContent); // 输出 Hello World
element.innerHTML = 'Hello JS'; // 修改HTML内容
</script>
更多操作详见:
事件监听
事件监听是指在特定事件发生时执行指定的函数。
事件绑定
- 通过HTML标签中的事件属性进行绑定
<button onclick="alert('按钮被点击')">点击我</button>
<!--或-->
<button oncliick="f()">点击我</button>
<script>
function f() {
alert('按钮被点击');
}
</script>
- 通过DOM元素属性进行绑定
document.getElementById('myButton').addEventListener('click', function() {
alert('按钮被点击');
});
常见事件
onclick
:点击事件,当用户点击元素时触发。onblur
:失去焦点事件,当元素失去焦点时触发。onfocus
:获得焦点事件,当元素获得焦点时触发。onchange
:改变事件,当元素的值发生改变时触发。onsubmit
:提交事件,当表单提交时触发。onreset
:重置事件,当表单重置时触发。onselect
:选择事件,当用户选择文本时触发。onmouseover
:鼠标悬停事件,当鼠标悬停在元素上时触发。onmouseout
:鼠标移出事件,当鼠标移出元素时触发。onmousedown
:鼠标按下事件,当用户按下鼠标按钮时触发。onmouseup
:鼠标松开事件,当用户松开鼠标按钮时触发。onkeydown
:键盘按下事件,当用户按下键盘键时触发。onkeyup
:键盘松开事件,当用户松开键盘键时触发。onkeypress
:键盘按下事件,当用户按下键盘键时触发。