一、JavaScript函数
1、函数的定义和调用
JavaScript函数可以通过以下两种方式进行定义:
1. 函数声明方式:
function functionName(parameter1, parameter2) {
// 函数体
// 执行的代码
return result; // 返回结果
}
在上面的代码中,functionName
是函数的名称,parameter1
和 parameter2
是函数的参数(可选)。函数体是一组在函数被调用时执行的语句。return
关键字可用于返回函数执行的结果(可选)
2. 函数表达式方式:
var functionName = function(parameter1, parameter2) {
// 函数体
// 执行的代码
return result; // 返回结果
};
在上面的代码中,functionName
是函数的名称(可选),parameter1
和 parameter2
是函数的参数(可选)。函数体是一组在函数被调用时执行的语句。return
关键字可用于返回函数执行的结果(可选)
调用函数时,只需要使用函数名称后面跟上参数即可:
var result = functionName(arg1, arg2);
例如,下面是计算两数相加和的函数:
function calculator(a, b)
{
c = a+b;
alert("a+b=" + c);
return c;
}
1. 在JS程序中被调用 (包括有返回值和无返回值的调用)
console.log(calculator(1, 1),"a+b=" + c)
运行结果:
2. 在按钮或超链接被点击时调用(监听点击事件)
2.1 监听按钮点击
<input type="submit" value="计算a+b的和" onclick="calculator(1,2)" >
运行结果(点击按钮时跳出弹窗):
2.2 监听超链接点击
<a href="#" onclick="calculator(3,4)">百度一下,你就知道</a>
运行结果(点击链接时跳出弹窗):
2、函数的局部变量和全局变量
全局变量是既可以作用于所有函数内,又可以作用于函数外
局部变量是在函数内部声明的变量,只能在函数内部使用,无法在函数外部访问。可以使用 var
、let
或 const
关键字声明局部变量
在JavaScript中,函数内部可以定义局部变量和访问全局变量。
下面通过例子了解全局变量和局部变量,例如:
<script>
var c=1; //全局变量,既可以作用于所有函数内,又可以作用于函数外
function calculator1(a,b)
{
var d=2; //局部变量,只作用与函数内
return (a+b+c)*d; //返回6
}
rlt1 = calculator1(1,1)
console.log("计算结果为:" + rlt1)
rlt2 = (1+1+c)*d //函数外无法调用局部变量d,控制台报错
console.log("计算结果为:" + rlt2)
</script>
二、JavaScript对象
1、对象的定义和使用
在 JavaScript 中,对象是一种复合数据类型,用于存储键值对。对象可以用于表示实际世界中的事物,具有属性和方法。
1.直接手动定义一个对象(而不是通过类实例化)
var person = {
firstName:"毛",
lastName:"主席",
age:83,
eyeColor:"黑色",
getName: function(){
// 注意this对象的使用(指向自身)
// 没有this,直接用属性名控制台会报错
allName = this.firstName + this.lastName;
return allName;
},
cal: function(a,b){
return a+b;
}
};
2.使用定义好的对象的属性和方法
console.log(person.eyeColor) //使用对象的属性
console.log(person.getName()) //使用对象的方法
console.log(person.cal(1,2)) //使用对象的方法
运行结果:
三、JavaScript常用类
JavaScript中常用的类有以下几种:
- Array:用于创建数组对象。
- String:用于创建字符串对象。
- Date:用于创建日期对象。
- Math:用于进行数学运算的对象。
1、Array
Array(数组)是JavaScript中最常用的内置对象之一。它用于存储和操作一组有序的数据
1. 定义数组:可以使用数组字面量([])或Array构造函数来定义数组。
// 使用数组字面量
let arr1 = [1, 2, 3, 4, 5];
// 使用Array构造函数
let arr2 = new Array(1, 2, 3, 4, 5);
2. 访问数组元素:可以使用索引来访问数组元素,索引从0开始。
let arr = [1, 2, 3, 4, 5];
console.log(arr[0]); // 1
console.log(arr[2]); // 3
3. 修改数组元素:可以通过赋值操作来修改数组元素。
let arr = [1, 2, 3, 4, 5];
arr[0] = 10;
console.log(arr); // [10, 2, 3, 4, 5]
常用数组方法:
1. length 属性返回数组的元素个数(数组长度)
var persons=new Array("毛泽东","邓小平","江泽民");
console.log(persons.length); // 3
2. push 方法用于在数组末端添加一个或多个元素,并返回添加新元素后的数组长度。注意:该方法会改变原数组!
var persons=new Array("毛泽东","邓小平","江泽民");
len = persons.push("胡锦涛");
console.log('新数组为:' + persons +'->长度为:' + len);
3. pop 方法用于删除数组最后一个元素,并返回被删除的那个元素。注意:该方法会改变原数组!
var persons=new Array("毛泽东","邓小平","江泽民");
p = persons.pop("邓小平"); //只会删除数组最后一个元素,而不会删除"邓小平"
console.log('新数组为:' + persons +'->被移除的元素为: ' + p);
4. reverse方法用于颠倒排列数组元素,返回改变后的数组。注意:该方法会改变原数组!
var persons=new Array("毛泽东","邓小平","江泽民");
p = persons.reverse();
console.log(p);
5. indexOf 方法返回给定元素在数组中第一次出现的位置,若未出现返回-1
var persons = new Array("毛泽东","邓小平","江泽民");
console.log(persons.indexOf("邓小平")); //1
console.log(persons.indexOf("胡锦涛")); //-1
2、String
字符串方法:
1. length 属性返回字符串的长度
var s = 'hello';
console.log(s.length) // 5
2. charAt 方法返回指定位置的字符
var s = new String('hello');
console.log(s.charAt(1)); // "e"
console.log(s.charAt(s.length - 1)); // "o"
console.log(s.charAt(10)); // "" 索引超出返回空字符串
3. concat 方法用于顺序连接多个字符串,返回一个新字符串(不改变原字符串)
var s1 = new String('hello');
var s2 = new String(' world');
console.log(s1.concat(s2)); // "hello world"
console.log(s1.concat(s2, ' hi', ' beijing')); // "hello world hi beijing"
4. indexOf 方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1表示不匹配。
var s = new String('hello world');
console.log(s.indexOf("world")); //6
console.log(s.indexOf("hi")); //-1
5. split 方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组
var s = new String('hello world hi beijing');
console.log(s.split(' ')); // 按照空格分割 ['hello', 'world', 'hi', 'beijing']
3、Math
Math(数学)是JavaScript中的一个内置对象,提供了很多数学相关的方法和属性。
1. abs方法返回参数值的绝对值
console.log(Math.abs(1)) // 1
console.log(Math.abs(-1)) // 1
2. max和min方法返回参数值的最大值和最小值
console.log(Math.max(1,2,3)) // 3
console.log(Math.min(1,2,3)) // 1
3. floor 和 ceil对参数向下取整和向上取整
console.log(Math.floor(3.3)) // 3
console.log(Math.floor(-3.3)) // -4
console.log(Math.ceil(3.3)) // 4
console.log(Math.ceil(-3.3)) // -3
4. random返回[0,1)之间的一个伪随机数
for (var index = 1; index <=5; index++)
{
console.log(Math.random())
}
// 随机输出任意范围的某个数(直接当成固定函数使用)
function getRandomInRange(min, max)
{
return Math.random() * (max - min) + min;
}
console.log(getRandomInRange(1, 20)); //随机输出1到20的某个数
5. 保留小数点指定位数(直接当成固定函数使用)
function truncateDecimalPlaces(num, decimalPlaces)
{
let factor = Math.pow(10, decimalPlaces);
return Math.floor(num * factor) / factor;
}
console.log(truncateDecimalPlaces(3.14159, 2)); // 输出 3.14
4、Date
Date(日期)是JavaScript中的一个内置对象,用于处理日期和时间。
例如:
// 基于Date类,创建一个对象示例,表示当前日期和时间
const now = new Date();
// 获取年份(四位数的年份,比如2024)
const year = now.getFullYear();
// 获取月份(从0开始,所以0表示1月,11表示12月,需要加1才能得到实际月份)
const month = now.getMonth() + 1;
// 获取日期(月份中的哪一天)
const day = now.getDate();
// 获取小时(24小时制)
const hours = now.getHours();
// 获取分钟
const minutes = now.getMinutes();
// 获取秒
const seconds = now.getSeconds();
// 输出当前未格式化的日期和时间
console.log(`当前日期和间:${year}-${month}-${day}${hours}:${minutes}:${seconds}`);
运行结果:
格式化日期和时间字符串
如果month小于10,它会在month前面插入一个'0',否则插入一个空字符串''。
这样做的目的是确保月份始终是两位数(例如,1月变为01)。
同理,${day < 10 ? '0' : ''}${day}确保日期也是两位数。
const formattedDate = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
const formattedTime = `${hours < 10 ? '0' : ''}${hours}:${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
// 输出当前格式化后的日期和时间
console.log(`当前日期和时间: ${formattedDate} ${formattedTime}`);
运行结果: