JavaScript基础

发布于:2024-04-20 ⋅ 阅读:(18) ⋅ 点赞:(0)

JavaScript

W3school在线学习文档

1.在HTML中引入JavaScript文件

  • JavaScript代码必须位于<script></script>标签之间
  • 在HTML文档中,可以在任意地方,放置任意数量的<script>
  • 一般会把脚本置于<body>元素的底部,可改善显示速度

示例一:在HTML中直接编写JavaScript代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-引入方式</title>
    <!-- 内部脚本 -->
</head>
<body>
</body>
     <!-- 外部脚本 -->
    <script>
        alert('Hello JS');
    </script>
</html>

示例二:引入JavaScript文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-引入方式</title>
</head>
<body>
</body>
    <script src="js/demo.js"></script>
</html>

2.信息输出:

api 描述
window.alert() 警告框
document.write() 在HTML 输出内容
console.log() 写入浏览器控制台

3.变量

关键字 解释
var 早期ECMAScript5中用于变量声明的关键字,全局变量
let ECMAScript6中新增的用于变量声明的关键字,相比较var,let只在代码块内生效,局部变量
const 声明常量的,常量一旦声明,不能修改,局部变量

4.数据类型和运算符

数据类型 描述
number 数字(整数、小数、NaN(Not a Number))
string 字符串,单双引皆可
boolean 布尔。true,false
null 对象为空
undefined 当声明的变量未初始化时,该变量的默认值是 undefined
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-数据类型</title>
</head>
<body>

</body>
<script>

    //原始数据类型
    alert(typeof 3); //number
    alert(typeof 3.14); //number

    alert(typeof "A"); //string
    alert(typeof 'Hello');//string

    alert(typeof true); //boolean
    alert(typeof false);//boolean

    alert(typeof null); //object 

    var a ;
    alert(typeof a); //undefined
    
</script>
</html>
运算规则 运算符
算术运算符 + , - , * , / , % , ++ , –
赋值运算符 = , += , -= , *= , /= , %=
比较运算符 > , < , >= , <= , != , == , === 注意 == 会进行类型转换,=== 不会进行类型转换
逻辑运算符 && , || , !
三元运算符 条件表达式 ? true_value: false_value

在js中,绝大多数的运算规则和java中是保持一致的,但是js中的==和===是有区别的。

  • ==:只比较值是否相等,不区分数据类型,哪怕类型不一致,==也会自动转换类型进行值得比较
  • ===:不光比较值,还要比较类型,如果类型不一致,直接返回false
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-运算符</title>
</head>
<body>
    
</body>
<script>
     var age = 20;
     var _age = "20";
     var $age = 20;
    
     alert(age == _age);//true ,只比较值
     alert(age === _age);//false ,类型不一样
     alert(age === $age);//true ,类型一样,值一样

</script>
</html>

6.类型转换

// 类型转换 - 其他类型转为数字
alert(parseInt("12")); //12
alert(parseInt("12A45")); //12
alert(parseInt("A45"));//NaN (not a number)

7.条件判断

**需要注意的是:**在js中,0,null,undefined,“”,NaN理解成false,反之理解成true

 // if(0){ //false
    //     alert("0 转换为false");
    // }
    // if(NaN){//false
    //     alert("NaN 转换为false");
    // }
    if(1){ //true
        alert("除0和NaN其他数字都转为 true");
    }

    // if(""){ //false
    //     alert("空字符串为 false, 其他都是true");
    // }
        
    // if(null){ //false
    //     alert("null 转化为false");
    // }
    // if(undefined){ //false
    //     alert("undefined 转化为false");
    // }

8.函数

因为JavaScript是弱数据类型的语言,所以有如下几点需要注意:

  • 形式参数不需要声明类型,并且JavaScript中不管什么类型都是let或者var去声明,加上也没有意义。
  • 返回值也不需要声明类型,直接return即可
  • 定义格式1:
function 函数名(参数1,参数2..){
    //要执行的代码
}
//示例
function add(a, b){
    return a + b;
}
let result = add(10,20);
alert(result);

定义格式二:

var functionName = function (参数1,参数2..){   
	//要执行的代码
}
//使用示例
<script>
    var add = function(a,b){
        return  a + b;
    }
    //函数调用
    var result = add(10,20);
    alert(result);
    
</script>

9.基本对象

一、array对象
<script>
    //定义数组
     var arr = new Array(1,2,3,4);
     var arr = [1,2,3,4];
	//获取数组中的值,索引从0开始计数
     console.log(arr[0]);
     console.log(arr[1]);
</script>
  • 特点

与java中不一样的是,JavaScript中数组相当于java中的集合,数组的长度是可以变化的。而且JavaScript是弱数据类型的语言,所以数组中可以存储任意数据类型的值

//特点: 长度可变 类型可变
var arr = [1,2,3,4];
arr[10] = 50;

// console.log(arr[10]);
// console.log(arr[9]);
// console.log(arr[8]);

arr[9] = "A";
arr[8] = true;

console.log(arr);

在这里插入图片描述

  • 属性与方法
属性 描述
length 设置或返回数组中元素的数量。
方法方法 描述
forEach() 遍历数组中的每个有值得元素,并调用一次传入的函数
push() 将新元素添加到数组的末尾,并返回新的长度
splice() 从数组中删除元素

forEach()遍历函数

var arr = [1,2,3,4];
arr[10] = 50;
	for (let i = 0; i < arr.length; i++) {
	console.log(arr[i]);
}

//e是形参,接受的是数组遍历时的值
arr.forEach(function(e){
     console.log(e);
})

arr.forEach((e) => {
     console.log(e);
}) 

splice()函数

splice()函数用来数组中的元素,函数中填入2个参数。

  • 参数1:表示从哪个索引位置删除

  • 参数2:表示删除元素的个数

如下代码表示:从索引2的位置开始删,删除2个元素

//splice: 删除元素
arr.splice(2,2);
console.log(arr);

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-Array</title>
</head>
<body>
    
</body>
<script>
    //定义数组
    // var arr = new Array(1,2,3,4);
    // var arr = [1,2,3,4];

    // console.log(arr[0]);
    // console.log(arr[1]);

    //特点: 长度可变 类型可变
    // var arr = [1,2,3,4];
    // arr[10] = 50;

    // console.log(arr[10]);
    // console.log(arr[9]);
    // console.log(arr[8]);

    // arr[9] = "A";
    // arr[8] = true;

    // console.log(arr);



    var arr = [1,2,3,4];
    arr[10] = 50;
    // for (let i = 0; i < arr.length; i++) {
    //     console.log(arr[i]);
    // }

    // console.log("==================");

    //forEach: 遍历数组中有值的元素
    // arr.forEach(function(e){
    //     console.log(e);
    // })

    // //ES6 箭头函数: (...) => {...} -- 简化函数定义
    // arr.forEach((e) => {
    //     console.log(e);
    // }) 

    //push: 添加元素到数组末尾
    // arr.push(7,8,9);
    // console.log(arr);

    //splice: 删除元素
    arr.splice(2,2);
    console.log(arr);

</script>
</html>
二、string对象
<script>
    //创建字符串对象
    //var str = new String("Hello String");
    var str = "  Hello String    ";
    console.log(str);
</script>
属性 描述
length 字符串的长度。
方法 描述
charAt() 返回在指定索引位置的字符,函数的参数就是索引
indexOf() 检索指定内容在字符串中的索引位置的,返回值是索引,参数是指定的内容
trim() 去除字符串两边的空格
substring() 提取字符串中两个指定的索引号之间的字符。函数有2个参数(开始索引和结束索引)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-String</title>
</head>
<body>
    
</body>
<script>
    //创建字符串对象
    //var str = new String("Hello String");
    var str = "  Hello String    ";

    console.log(str);

    //length
    console.log(str.length);

    //charAt
    console.log(str.charAt(4));

    //indexOf
    console.log(str.indexOf("lo"));

    //trim
    var s = str.trim();
    console.log(s.length);

    //substring(start,end) --- 开始索引, 结束索引 (含头不含尾)
    console.log(s.substring(0,5));

</script>
</html>
三、JSON对象

语法格式,key必须使用引号并且是双引号标记,value可以是任意数据类型

var 对象名 = {
    属性名1: 属性值1, 
    属性名2: 属性值2,
    属性名3: 属性值3,
    函数名称: function(形参列表){}
};

示例

<script>
    //自定义对象
    var user = {
        name: "Tom",
        age: 10,
        gender: "male",
       // eat: function(){
       //     console.log("用膳~");
       //  }
        //可简化为:
        eat(){
            console.log("用膳~");
        }
    }

    console.log(user.name);
    user.eat();
<script>
var jsonstr = '{"name":"Tom", "age":18, "addr":["北京","上海","西安"]}';//当前还是字符串
var obj = JSON.parse(jsonstr);//使用parse函数转为JSON对象
alert(jsonstr.name);//undefine
alert(obj.name);
alert(JSON.stringify)

在这里插入图片描述