【第四部分 | JavaScript 基础】3:函数、作用域与预解析、对象

news2025/1/16 5:38:12

目录

| 函数

声明与调用

参数

返回值

arguments(JS特有知识点)

命名函数 和 匿名函数

| 作用域

全局和局部、JS5没有块级作用域

就近原则:作用域链

| 预解析(重要)

导论:四种语句位置导致的现象

上述现象的原理:JS编译的流程【重点!】

预解析相关面试考核点

| 自定义对象

创建对象

使用对象的属性、方法

【辨析】变量、属性、函数、方法

new 关键字执行的四个步骤

对象的遍历 使用for...in...

总结

| 内置对象

官方API

数学对象Math

日期对象Date

数组对象 Array

基本包装类型 & 字符串不可变

字符串对象 String

[案例] 统计出现次数最多的字符


| 函数

声明与调用

 

参数

  • JS的形参声明,不需要声明类型! 直接写变量名即可

函数形参和实参个数不匹配问题

 

 

经过测试,在函数形参中修改数组的元素,相当于修改数组对应地址的元素

<!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>Document</title>
    <script>
        var nums = [1,2,3];
        alert(nums);// 1 2 3

        changeArrayElements(nums);
        function changeArrayElements(array) {
            array[1] = 5;
        }

        alert(nums);// 1 5 3


    </script>
</head>
<body>
    
</body>
</html>

 

 

返回值

注意一下JS返回值 和Java的不同点

  • 不需要在函数声明的语句中写返回类型

  • 只需要写return XXX; 即可

  • JS中所有函数都有返回值!若不写return,也会有默认的返回值:undefined

  • return 语句之后的代码不被执行。return 只能返回一个值。如果用逗号隔开多个值,以最后一个为准。

代码示例

		function getStr(){
            return 'AAA';
        }

        function getUndefined(){

        }

        alert(getStr()); //AAA
        alert(getUndefined()); //undefined

 

 

arguments(JS特有知识点)

  • arguments的作用:存储所有传递过来的实参。

  • 本质是一个对象。有点类似于Java的map

  • 所有的JS函数都内置了这个对象,放心使用!

介绍

示例

<!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>Document</title>
    <script>

        useArguments(1,2,3,4);

        // 若形参的个数不确定,则我们干脆不写形参了。这样的话,我们的JS会自动帮我们把传进来的形参,放进arguments[]数组中
        function useArguments() {
            // arguments的本质是一个对象。有点类似于Java的map
            console.log(arguments); //Arguments { 0: 1, 1: 2, 2: 3, 3: 4, … }
        }
    </script>
</head>
<body>
    
</body>
</html>

 


命名函数 和 匿名函数

介绍

命名函数:

匿名函数:

 


注意事项

  • 对于命名函数,调用函数的代码既可以放到声明函数的前面,也可以放在声明函数的后面;

    对于匿名函数,函数调用的代码必须写到函数体后面

  • 匿名函数声明 var XXX = function(){...}; 此时XXX存储的是一个函数


| 作用域

全局和局部、JS5没有块级作用域

  • JS的作用域和Java差不多,都是全局是全局作用域,函数内是局部作用域

  • 但是JS有一种特殊情况:在函数内部声明的变量也是全局变量。 如下

  • 需要特别注意的是:JS5除了函数外,其它的都不是块级作用域!即:if、for中定义的变量,是全局变量! JS6后,if、for里的变量才是局部变量。

 

 

就近原则:作用域链

说人话就是:有两个同名变量,函数中调用这个名字的变量的时候,到底用哪一个变量? 就近原则

 示例


| 预解析(重要)

导论:四种语句位置导致的现象

JS是一门解释型语言,即:逐行运行,逐行编译。因此,这对于代码顺序的要求有些严格。下面给出一些例子

 


上述现象的原理:JS编译的流程【重点!】

知识点【重点!】

四种语句位置现象的解释

第二种情况undefined的原因:JS预编译,把变量声明var nume提升到当前作用域最前面,但是赋值操作没有提升,所以相当于没有赋值,输出undefined

 

第三种情况:命名函数的调用在声明语句的前后都可以生效的原因:JS会把函数声明提升到当前作用域的最前面,然后调用语句都是在预编译之后的函数声明语句后面的位置,因此都可以调用~

 

第四种情况报错的原理:先声明了一个fun的变量,但是并没有赋值函数体,此时调用了fun(),但是JS认为此时JS是一个变量而不是一个函数,因此输出“这不是一个函数”的报错

 

 

 


预解析相关面试考核点

 

上面的代码预解析后为:

变量提升:声明提到最前面,但是不赋值;函数提升:函数声明提到最前面,但是不调用

var num;

function fun() {

var num;

console.log(num);

num = 20;

}

num = 10;

fun();

最终输出的是:undefined

var a=b=c=9; 相当于 var a=9 ; b=9 ; c=9; a是局部变量,b和c是全局变量

上面的代码预解析后为:

//函数提升

function f1() {

//变量提升

var a;

a=b=c=9;

console.log(a);

console.log(b);

console.log(c);

}

f1(); //9 9 9

console.log(c);// 9

console.log(b);// 9

console.log(a);// 局部变量,报错

 

| 自定义对象

创建对象

利用字面量创建对象

  • { } 里面采取键值对的形式表示。var只需要在对象外面声明。 对象内的属性使用键值对【冒号】链接。 对象内的是匿名函数

  • 注意对象名后面和花括号之间是 =                    属性名和属性值之间是 :                       属性值后面是, 而不是; 

利用 new Object 创建对象

Object是固定写法。注意O是大写

 

  • 利用等号追加赋值,且后面是分号结尾

  • JS中的对象,可以往里面追加属性

        //new关键字定义对象
        var obj2 = new Object();
        obj2.name = 'Klee2';
        obj2.age = 10;
        obj2.f2 = function() {
            alert('Hi~ ');
        }
        obj2['name'];
        obj2.f2();

 

利用构造函数创建对象(常用)

  • 构造函数不需要写return

        //构造函数定义对象
        function Person(name , age , sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;

            this.f3 = function() {
                alert('name = '+name+';age = '+age+';sex = '+sex);
            }
        }
        obj3 = new Person('Klee3 , 12 , Women');
        console.log(obj3.name);
        obj3.f3();

 


使用对象的属性、方法

第一种方法 调用方法一

对象名.属性名;

第二种方法 调用属性

对象名['属性名'];

使用对象的函数

  • 注意:匿名函数(方法)的调用,需要在属性名后面加上一个()哦

  • 定义在对象外的function被称为【函数】,定义在对象内的function被称为【方法】

对象名.函数名();

代码示例

<!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>Document</title>
    <script>
        //字面量定义对象
        var obj1 = {
            name : 'Klee',
            age : 9,
            f1 : function() {
                alert('I\'m Klee');
            }
        }
        //调用对象
        console.log(obj1.name);   //klee
        console.log(obj1['name']);  //klee
        obj1.f1();


    </script>
</head>
<body>
    
</body>
</html>

【辨析】变量、属性、函数、方法

变量:使用 var 关键字单独声明和赋值。如 var num = 10;

属性:在类中,无需关键字 var 声明,且使用键值对进行赋值。 如 var obj = { num : 10; }

函数:单独声明和调用。调用的时候单独使用 函数名( );

方法:在对象里面声明,相当于匿名函数。 调用的时候通过 对象名.方法名( );


new 关键字执行的四个步骤


对象的遍历 使用for...in...


 


总结

 

 

| 内置对象

官方API

授人以鱼不如授人以渔,以后可以来这里查找一些JS的内置对象

MDN: MDN Web Docs


数学对象Math

Math可以直接调用里面的方法。Math不需要构造函数创建对象

基本运算

随机函数

 

 示例代码

<!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>Document</title>
    <script>
        var nums = [-1,0,2,3,3];

        //基本运算
        console.log(Math.PI); //3.1415...
        console.log(Math.floor(2.33)); //向下取整 2
        console.log(Math.ceil(2.33)); //向上取整 3
        console.log(Math.round(-2.5)); //变大的四舍五入  -2
        console.log(Math.round(2.5)); //变大的四舍五入 3
        console.log(Math.abs(-2.3)); //绝对值 2.3
        console.log(Math.max(3,4,5)); //最大值 3
        console.log(Math.min(-1,1,0)); //最小值 -1
        console.log(Math.max()); //没有参数 则Math.max返回  -Infinity
        console.log(Math.max(1,'Klee'));; //有非数字,则返回 NaN
        console.log(Math.min());  //没有参数 则Math.min返回  Infinity

        
        // 函数:获取[min,max]的整数。  Math.Random()获取 [0,1)的小数
        function getRandom(min , max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        console.log(getRandom(20,40));
        
    </script>
</head>
<body>
    
</body>
</html>

 

 

日期对象Date

日期对象Date需要通过构造函数创建对象,需要实例化后才能使用

创建日期对象

日期对象格式化

  • 默认格式:很丑,我们需要学会格式化时间。

  • 需要获取日期指定的部分,所以我们要手动的得到这种格式

 

获取日期总毫秒

  • Date 对象是基于1970年1月1日(世界标准时间)起的毫秒数

  • 我们经常利用总的毫秒数来计算时间,因为它更精确

 

上述三个知识点的代码示例

<!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>Document</title>
    <script>


        //构造日期对象
        var date1 = new Date();//构造函数没有参数,则返回当前时间
        console.log(date1);

		//构造函数有参数,数字格式的时间   XXXX,XX,XX  则产生对应时间的date(JS的月份从0开始,数字为n,则JS认为是n+1月)
        var date2 = new Date(2001,1,1);
        console.log(date2);  //返回的是Febrary 2月【即通过数字型格式参数赋值的月份,比规定的要大一个月】

        var date3 = new Date('2001-1-1 8:8:8');//使用字符串时间的格式  'XXXX-XX-XX XX:XX:XX' (推荐!!!!)
        console.log(date3);  //通过字符串格式产生的date对象,月份和参数一致



        //日期格式化
        var year = date1.getFullYear();
        var month = date1.getMonth();
        var day = date1.getDate();
        console.log('今天是'+year+'年'+month+'月'+day+'日'); //今天是2022年4月23日【错误!需要注意,获取到的month从0开始,因此需要加1】
        console.log('今天是'+year+'年'+(month+1)+'月'+day+'日'); //今天是2022年5月23日 正确


        
        //当前日期的毫秒值(距1970.1.1)
        var date4 = new Date();
        console.log(date4.valueOf()); //1653310553063
        console.log(date4.getTime()); //1653310553063

        var dateTime = +new Date(); //+new Date() 返回的就是总的毫秒数
        console.log(dateTime); //1653310553063

        var dateTime2 = Date.now();//Html5新方法 有兼容问题
        console.log(dateTime2); //1653310553063

    </script>
</head>
<body>
    
</body>
</html>

 


数组对象 Array

判断是否为数组

  • instanceof 运算符,可以判断一个对象是否属于某种类型

  • Array.isArray()用于判断一个对象是否为数组,isArray() 是 HTML5 中提供的方法

var arr = [1, 23];
var obj = {};
console.log(arr instanceof Array); // true
console.log(obj instanceof Array); // false
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // 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>Document</title>
    <script>
        var nums = [1,2,3,4,5,6];

        //判断是否为数组
        console.log(nums instanceof Array);//true
        console.log(Array.isArray(nums));//true
        console.log(nums.toString());//1 2 3 4 5 6


        //push向末尾增加一个 / 多个元素(改变原数组)
        nums.push(7,8);
        console.log(nums.toString()); //1 2 3 4 5 6 7 8 

        
        //pop删除最后一个元素(改变原数组)
        nums.pop();
        console.log(nums.toString());//1 2 3 4 5 6 7


        //unshift向开头增加一个 / 多个元素(改变原数组)
        nums.unshift(-2,-1,0);
        console.log(nums.toString());//-2 -1 0 1 2 3 4 5 6 7    


        //shift删除第一个元素(改变原数组)
        nums.shift();
        console.log(nums.toString());//-1 0 1 2 3 4 5 6 7


        //数组reverse()颠倒数组(改变原数组)
        var nums2 = nums.reverse();
        console.log(nums2.toString());//7,6,5,4,3,2,1,0,-1
        console.log(nums.toString());//7,6,5,4,3,2,1,0,-1


        //数组sort( )排序数组
        var nums3 = [3,5,2,4,5,6,5,3,2,4,4,2];
        nums3.sort();
        console.log(nums3.toString());//2,2,2,3,3,4,4,4,5,5,5,6


        //使用indexOf()查找元素的第一个索引
        console.log(nums3.indexOf(3));//3  即:元素3第一次出现的索引是3
        //使用lastIndexOf()查找元素的最后一个索引
        console.log(nums3.lastIndexOf(5));//10


        //除了toString,join('分隔符') 也可以把数组转为字符串
        console.log(nums3.join(' | '));//2 | 2 | 2 | 3 | 3 | 4 | 4 | 4 | 5 | 5 | 5 | 6


        //concat()用来连接两个数组为一个新数组
        var nums4 = [1,2];
        var nums5 = [3,4];
        var nums6 = nums4.concat(nums5);
        console.log(nums6.toString());//1,2,3,4


        //slice(beginIndex , endIndex)返回被截取项目的新数组,返回的是 [begin , end) 上的元素
        var nums7 = nums6.slice(1,3);
        console.log(nums7.toString());//2,3


        //splice(开始的索引数 , 要删除的个数)
        var nums8 = [1,2,3,4,5,6];
        nums8.splice(2,3);//从索引2开始,删除3个数
        console.log(nums8.toString());//1,2,6

    </script>
</head>
<body>
    
</body>
</html>

 


基本包装类型 & 字符串不可变

基本包装类型

字符串不可变

 


字符串对象 String

正如前面所说,字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串

根据字符返回位置

应用

根据位置返回字符(重点)

 

ASCII表

字符串操作方法

 

替换索引的字符

 

把数组 → 字符串

array.join('');

 上述语法的详细代码示例

<!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>Document</title>
    <script>
        var str1 = 'Klee';

        //根据字符返回位置
        console.log(str1.indexOf('K'));//0
        console.log(str1.indexOf('K',1));//('K',1)代表从索引=1的地方开始查找。因为没有找到K 所以返回的是 -1
        console.log(str1.lastIndexOf('e'));//3


        //根据位置返回字符
        var c1 = str1.charAt(0);
        console.log(c1);//K
        var c2 = str1[0];
        console.log(c2);//K H5、IE8+、CharAt支持

        
        //根据位置返回字符的ASCII码
        console.log(str1.charCodeAt(0));//75  (K的ASCII码是75)

        //substr(开始索引,字符个数) 截取字符串
        console.log(str1.substr(1,2));//le

        //replace(被替换字符串 ,要替换的字符串)
        console.log(str1.replace('le','el'));//leke


    </script>
</head>
<body>
    
</body>
</html>

 


[案例] 统计出现次数最多的字符

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        // 有一个对象 来判断是否有该属性 对象['属性名']
        var o = {
            age: 18
        }
        if (o['sex']) {
            console.log('里面有该属性');

        } else {
            console.log('没有该属性');

        }

        //  判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。
        // o.a = 1
        // o.b = 1
        // o.c = 1
        // o.o = 4
        // 核心算法:利用 charAt() 遍历这个字符串
        // 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
        // 遍历对象,得到最大值和该字符
        var str = 'abcoefoxyozzopp';
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i); // chars 是 字符串的每一个字符
            if (o[chars]) { // o[chars] 得到的是属性值
                o[chars]++;
            } else {
                o[chars] = 1;
            }
        }
        console.log(o);
        // 2. 遍历对象
        var max = 0;
        var ch = '';
        for (var k in o) {
            // k 得到是 属性名
            // o[k] 得到的是属性值
            if (o[k] > max) {
                max = o[k];
                ch = k;
            }
        }
        console.log(max);
        console.log('最多的字符是' + ch);
    </script>
</head>

<body>

</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装TPDSS

TPDSS使用前电脑必须安装jdk。如若jdk安装完毕&#xff0c;则忽略第一步 第一步&#xff1a;jdk jdk安装完毕后控制面板会出现java字样 jdk安装完毕后&#xff0c;配置环境变量进行生效 1、进入到刚才安装时选择的文件夹&#xff0c;选中上方文件的路径&#xff0c;鼠标右键&…

全国各省产业结构协调-高级化、合理化指标(2000-2020年)

全国各省产业结构协调-高级化、合理化指标&#xff08;2000-2020年&#xff09; 1、时间&#xff1a;2000-2020年 2、包括&#xff1a;30个省份不含西藏 3、来源&#xff1a;统计NJ和国家统计J 4、指标包括&#xff1a; 原始数据&#xff1a;地区生产总值(亿元)、就业人员…

【软件测试】资深测试是如何火速入坑的?测试任务艰巨无从下手?

目录&#xff1a;导读一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;如何快速融入项目团队? 熟悉…

leetcode 1926. Nearest Exit from Entrance in Maze(迷宫最近的出口)

Input: maze [[“”,“”,“.”,“”],[“.”,“.”,“.”,“”],[“”,“”,“”,“.”]], entrance [1,2] Output: 1 Explanation: There are 3 exits in this maze at [1,0], [0,2], and [2,3]. Initially, you are at the entrance cell [1,2]. You can reach [1,0] by …

大模型产业化有四个关键,昇腾AI推动“AI+遥感”打了个样

文|智能相对论 作者|夜远风 农业卫星在太空“拍下”地面这张“照片”&#xff0c;地面根据这些图像数据&#xff0c;结合气象情况等&#xff0c;通过AI算法就准确地“算”出了农作物的长势状况&#xff0c;给地方政府、种地农民以参考。 &#xff08;图&#xff1a;农业用地的…

uni-app入门:页面布局之window和tabbar

1.window 2.tabbar 3.全局配置与局部页面配置 前言 每个页面按照结构可以分成三部分:window page tabbar.其中window和tabbar一般比较固定&#xff0c;page是平常业务开展的主要载体&#xff0c;根据业务需求进行页面配置。下面主要讲一下window和tabbar。 1.window…

【苹果相册】苹果推从新建的私钥CSR文件Profile还分为开发和分发

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

A-Level经济例题解析及练习

今日知识点&#xff1a; Externality and Government Intervention 例题 Externality and Government Intervention Acme and US Electric run coal-burning power plants. Each emits 40 tons of sulphur dioxide per month, total emissions 80 tons/month. Goal: Redu…

EXCEL函数

1.文本函数 1.2 LEFT() 概念&#xff1a;从文本字符串的第一个字符开始返回指定个数的字符。 例子&#xff1a;编辑此文本&#xff1a;忍一时风平浪静&#xff0c;退一步越想越气。 此处的H1即代表该文本&#xff0c;下面函数举例同样如此&#xff1a; 操作&#xff1a;LEFT(…

Magisk搞机器记录(小米Mix3)

背景 最近咸鱼入手了一块8256的小米Mix3手机&#xff0c;于是开始进行愉快的搞机之旅。笔者也是第一次玩&#xff0c;查阅了很多资料&#xff0c;如有错误的地方&#xff0c;还请大佬们指出来。 调研 经过大概的了解&#xff0c;大概就是解锁&#xff0c;获取Root权限&#…

机器学习笔记之高斯分布(五)推断任务之边缘概率分布与条件概率分布

机器学习笔记之高斯分布——推断任务之边缘概率分布与条件概率分布引言回顾&#xff1a;卡尔曼滤波高斯分布与线性计算的相关定理任务目标与推导过程任务目标求解边缘概率分布求解条件概率分布引言 上一节介绍了高斯分布概率模型相关的推断问题&#xff0c;并详细介绍了给定联…

RabbitMQ系列【12】惰性队列

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言设置为惰性队列内存开销对比前言 默认情况下&#xff0c;当生产者将消息发送到 RabbitMQ 的时候&#xff0c;队列中的消息会尽可能的存储在内存之中&#xff0c;这样可以更加快速的将消息发…

CTFHub技能树 Web-SQL注入详解

文章目录0x01 整数型注入0x02 字符型注入0x03 报错注入0x04 布尔盲注0x05 时间盲注0x06 MySql结构0x07 Cookie注入0x08 空格绕过0x09 UA注入0x10 Refer注入总结摘抄0x01 整数型注入 解题WP 第一步 尝试闭合点 第二步 判断列数 id1 order by 2 页面正常 id1 order by 3 页面…

C语言中的文件操作

在今天的文章中&#xff0c;我将要讲解C语言里的文件操作的详细知识。 目录1.为什么使用文件2.什么是文件2.1程序文件2.2数据文件2.3文件名3.文件的打开和关闭3.1文件指针3.2文件的打开和关闭3.2.1 fopen函数3.2.2 fclose函数3.2.3 文件的打开方式4.文件的顺序读写4.1 文件输入…

高通量筛选——离子化合物

上线离子通道筛选平台&#xff0c;提供形式多样的高表达细胞系的离子通道检测及新药临床前离子通道作用评价服务。 离子通道离子通道 (Ion Channel) 是一类跨膜的大分子孔道蛋白&#xff0c;可允许特定类型离子在电化学梯度驱动下穿过细胞膜&#xff0c;从而完成信号传导、细…

罗丹明PEG巯基,Rhodamine PEG Thiol,RB-PEG-SH

产品名称&#xff1a;罗丹明PEG巯基 英文名称&#xff1a;Rhodamine PEG Thiol&#xff0c;RB-PEG-SH 罗丹明B-PEG巯基&#xff08;RB-PEG-SH&#xff09;可以用来修饰蛋白质、多肽以及其他材料或者小分子。马来酰亚胺和巯基&#xff08;-SH&#xff09;在PH6.5-7.5很容易形成…

JAVA maven

Maven基础 Maven的本质是一个项目管理工具&#xff0c;将项目开发和管理过程抽象成一个项目对象模型&#xff08;POM&#xff09; POM(Project Object Model&#xff09;&#xff1a;项目对象模型。 项目对象模型&#xff08;POM&#xff09;需要加载pom.xml来确定项目&#x…

【SpringBoot笔记27】SpringBoot集成ES数据库之操作index索引(创建、删除、获取)

这篇文章&#xff0c;主要介绍SpringBoot如何操作ES数据库中的index索引&#xff08;创建、删除、获取&#xff09;。 目录 一、SpringBoot操作ES索引 1.1、创建索引 1.2、删除索引 1.3、获取索引 1.4、判断索引是否存在 一、SpringBoot操作ES索引 ES的高级客户端中&…

一、数据库查询语句(单表查询篇)

一、数据库查询语句(单表查询篇) 单表查询&#xff1a;SELECT 语句仅从一个表/视图中检索数据&#xff0c;称单表查询。即其中的<普通表> 使用的是[<模式名>.]<基表名|视图名>。 该查询的语句所依赖的表是创建数据库实例默认勾选的两个实例&#xff1a;BOOKS…

Python数据分析实战-实现txt文件与列表(list)相互读写转换(附源码和实现效果)

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用&#xff0c;分为分类问题&#xff08;预测值是离散型&#xff09;和回归问题&#xff08;预测值是连续型&#xff09;&#xff08;具体见之前的文章&#xff09;。 从本期开始&#xff0c;我将做一个数据分析类实战…