JavaScript入门-下 函数 函数的定义与调用 函数是一段可复用的代码,可以根据需要调用多次。...setTimeout(function() { console.log("1秒后执行此函数"); }, 1000); // 1秒后执行 递归函数 递归函数是调用自身的函数,常用于解决分治问题或递归结构...箭头函数是 ES6 中引入的简洁语法,特别适合简短的函数表达式。...它没有自己的 this,会捕获其外部函数的 this 值。...默认情况下,事件处理是在冒泡阶段执行的,但你也可以选择在捕获阶段处理。 停止事件传播 可以使用 event.stopPropagation() 来阻止事件进一步传播。
^在起始处匹配,如果有MULTILINE标志,则在每个换行符后匹配 5. Z 在结尾处匹配 6. $在结尾处匹配,如果有MULTILINE标志,则在每个换行符前匹配 7. (?...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 2. rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象,可以调用匹配对象的...每一个匹配的地方用x进行替换,返回替换后的字符串,如果指定m,则最多替换m次。对于x可以使用/i或者/gid可以是组名或者编号来引用捕获到的内容。...模块方法re.sub(r, x, s, m)中的x可以使用一个函数。此时我们就可以对捕获到的内容推过这个函数进行处理后再替换匹配到的文本。...对于正则表达式的搜索功能,如果只搜索一次可以使用search或者match方法返回的匹配对象得到,对于搜索多次可以使用finditer方法返回的可迭代对象来迭代访问 3.
媒体流指的是访问设备后产生的数据流,轨道指的是 WebRTC 中的基本媒体单元。...在实际应用场景中这些媒体流将由更多种数据组成,WebRTC 将其划分成了多个轨道,我们可以得到不同轨道对应的设备信息,也可以对其进行控制,如麦克风静音或网络不优秀的时候关掉视频。...,同样传入更大的帧率得到的效果将更加流畅清晰 媒体流介绍: 媒体流是通过 MediaStream 接口得到后进行操作的,在一个媒体流中可以包含多个轨道,如同时支持视频和音频后得到的视频轨道和音频轨道,...摄像头:捕获用户设备中所支持的摄像头硬件设备; 麦克风:捕获用户设备中所支持的麦克风硬件设备; 计算机屏幕,窗口:捕获用户计算机屏幕、窗口等; Canvas:捕获在 Canvas 中的内容; 视频源 Video...2 ended 当媒体流读取完毕触发结束事件后返回 true,反之返回 false。
.[^"\\]*)***:非捕获分组,匹配转义字符后的任意字符,以及随后的非双引号和非反斜杠的字符零次或多次;这个分组可以重复零次或多次; **"**:匹配双引号。...**:非捕获分组,匹配星号或斜杠后的非星号和非斜杠的字符零次或多次;这个分组可以重复零次或多次,但尽量少重复(懒惰匹配); **\*\/**:匹配 */。...**:匹配任意字符零次或多次,但尽量少重复(懒惰匹配); (?:(?:\r?\n)|$):非捕获分组,匹配换行符(\r\n 或 **\n**)或字符串末尾。...回调函数接收 6 个参数:**match** 是整个匹配的字符串,**_m1**, _m2, m3, m4, m5 分别对应正则表达式中的捕获分组。...在VSCode中的应用 这个函数在VSCode中用来去除 json 中的注释,因为 json 本身是不支持注释的。
find在范围内查找第一个与输入值相等的元素并返回指定这个元素的迭代器,否则返回end迭代器。...; }; cout << lam(); lambda特别的成分是捕获列表,在捕获列表中可以写入一些lambda所在函数的局部变量,然后用逗号分隔。...其中值捕获和引用捕获区别就是写入捕获列表的名称是否加上引用符而已,效果也与引用变量相同 隐式捕获比较特别,通过在捕获列表中无名地写个=或&,可以告诉编译器推断函数所需要的捕获,其中=是值捕获推断,&是引用捕获推断...函数的第一个参数是需要适配的可调用对象,后续参数是需要传递给这个调用对象的参数,返回值是适配后的可调用对象。...,例如unique在之前说到会将重复的元素放到容器尾,在链表版本中unique会将重复元素直接删除,也类似的merge在通用版本中仅仅是合并序列到目的迭代器中,在链表版本中合并后原始的链表将会消失
这种引用既可以在正则表达式内部,也可以是在正则表达式外部。 捕获组有两种形式,一种是普通捕获组,另一种是命名捕获组。...)/ 和 /\k/ 只有在命名捕获组中才有意义。如果正则表达式没有命名捕获组,那么 /\k/ 仅仅是字符串字面量 “k” 而已。...迭代器 Iterator ES6 中引入迭代器来遍历数组,JavaScript 中的迭代器是一个对象,提供 next() 方法,用来返回序列中的下一项,这个方法包含两个属性:done 和 value。...如上所述,我们必须返回迭代器结果的 promise,因为在迭代器方法返回时,迭代器的下一个值和 done 状态可能未知。...而普通生成器函数并不返回 Promise,而是直接返回 { value, done }。这会自动使返回的异步生成器对象具有异步迭代的功能。
、判断函数,这一类函数在string模块中没有,这些函数返回的都是bool值 """ S.startswith(prefix[,start[,end]]) #是否以prefix开头 S.endswith...答案是: 是的, IP 地址里的数字可以包含有前导 0 (leading zeroes). 2.5后向引用 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 2. rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象,...此时我们就可以对捕获到的内容推过这个函数进行处理后再替换匹配到的文本。...来判断 对于正则表达式的搜索功能,如果只搜索一次可以使用search或者match方法返回的匹配对象得到,对于搜索多次可以使用finditer方法返回的可迭代对象来迭代访问 对于正则表达式的替换功能,可以使用正则表达式对象的
就是两人午餐后,回到工位,在30分钟内,各自用Rust和C++实现同一个功能——读取文件到字符串中,看看谁的代码不仅稳定还能效率更高。...「这个函数在字符串引用上调用lines方法。这个方法返回字符串行的迭代器。」 contents.lines() 「然后在此迭代器上调用next方法。...contents.lines().next() 「在这种情况下,由于在创建迭代器后立即调用next,它将返回字符串的第一行,或者如果字符串为空则返回None。」 2.5 运行代码 「咱们运行一下。」...他们在屏幕上看到了输出。...异常,在main()函数中,没有显式捕获,难道C++编译器不报错吗?」
^在起始处匹配,如果有MULTILINE标志,则在每个换行符后匹配 5. Z 在结尾处匹配 6....,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 2. rx.finditer(s, start, end): 返回一个可迭代对象...每一个匹配的地方用x进行替换,返回替换后的字符串,如果指定m,则最多替换m次。对于x可以使用/i或者/gid可以是组名或者编号来引用捕获到的内容。 ...模块方法re.sub(r, x, s, m)中的x可以使用一个函数。此时我们就可以对捕获到的内容推过这个函数进行处理后再替换匹配到的文本。 ...对于正则表达式的搜索功能,如果只搜索一次可以使用search或者match方法返回的匹配对象得到,对于搜索多次可以使用finditer方法返回的可迭代对象来迭代访问 3.
标志,则在每个换行符后匹配 \Z 在结尾处匹配 $ 在结尾处匹配,如果有MULTILINE标志,则在每个换行符前匹配 (?...,元组中包含子分组中匹配到的内容,但是没有返回整个正则表达式匹配的内容 rx.finditer(s, start, end): 返回一个可迭代对象 对可迭代对象进行迭代,每一次返回一个匹配对象...每一个匹配的地方用x进行替换,返回替换后的字符串,如果指定m,则最多替换m次。对于x可以使用/i或者/gid可以是组名或者编号来引用捕获到的内容。...模块方法re.sub(r, x, s, m)中的x可以使用一个函数。此时我们就可以对捕获到的内容推过这个函数进行处理后再替换匹配到的文本。...对于正则表达式的搜索功能,如果只搜索一次可以使用search()或者match()方法返回的匹配对象得到,对于搜索多次可以使用finditer()方法返回的可迭代对象来迭代访问。
(或者返回一个特殊的值来表示错误) # 在这个例子中,我们简单地选择不返回任何值(即返回None) # 注意:在实际应用中,最好避免函数在没有明确返回值的情况下返回...由于我们没有从函数中返回一个有效的结果,所以函数返回了None,这被打印为第三行输出。 注意:在上面的代码中,我添加了一个注释来说明如果尝试传递一个字符串作为除数将会发生什么。...但在某些高级用法中,比如使用itertools模块中的某些函数或者手动管理迭代器时,了解StopIteration是有帮助的。...第二个调用 divide_numbers(10, 0) 尝试除以零,捕获到 ZeroDivisionError 异常,打印出错误信息,并返回 None。同时,finally块中的代码也被执行。...案例 # 尝试从标准输入读取数据,直到遇到EOF try: # 使用input()函数从标准输入读取一行数据 # input()函数会在用户按下Enter键后返回输入的数据
在此例中,当调用f时,参数列表是空的。如果忽略返回类型,lambda根据函数体中的代码推断出返回类型。...上面例子中由于lambda只捕获了test函数中局部变量sz,因此可以在lambda的函数体中使用sz.lambda不捕获words,因此不能在lambda的函数体中访问此变量。...如果我们给lambda提供一个空捕获列表,则代码会编译出错: 一个lambda只有在其捕获列表中捕获了一个它所在函数中的局部变量,才能在函数体中使用该变量 lambda表达式在泛型算法的应用...lambda捕获的都是局部变量,这些变量在函数结束后就不复存在了。 如果lambda可能在函数结束后执行,捕获的引用执行的局部变量已经消失。...如果我们捕获一个指针或迭代器,或采用引用捕获方式,就必须保证对象具有预期的值。 在lambda从创建到它执行这段时间内,可能有代码改变绑定对象的值。
TryCaptureGeneric是一个trait,用于尝试从值中捕获错误,并根据是否捕获成功返回Option。...该函数通过逐字节匹配的方式查找,判断当前字节是否匹配其中一个目标字节。 memrchr函数用于在字节序列中从后往前查找最后一次出现的指定字节。...该函数利用了反向迭代器对字节序列进行逆序查找,从而在较短的时间内定位到目标字节。 memrchr2函数用于在字节序列中从后往前查找最后一次出现的两个指定字节中的任意一个。...在 mod.rs 文件中,定义了一些重要的类型和常量,如 SliceIndex trait,它定义了用于索引 Slice 的类型;GetManyMutError 和 GetManyError 是用于多次获取切片引用时出现错误时的返回类型...catch_unwind 函数:这个函数用于捕获 panic,防止程序崩溃。它在闭包中执行用户提供的代码,如果其中发生了 panic,则返回一个 Result 类型,而不是终止程序的执行。
反斜杠 反斜杠加字母有时候在转义字符和正则表达式中功能冲突,通常的解决办法是使用r或者R取消转义。 三、字符集 1. 系统正则表达式字符集 ?...用户自定义正则表达式字符集 除了使用系统字符集以外,用户可以自定义字符集 注意:这里一个中括号只能匹配一个字符;^在中括号外表示一行开始,在中括号里面表示取反、排除的意思 ?...原因:如果对正则表达式做了分组,使用findall函数则显示捕获组所匹配的内容,不能完整显示,如果想完整显示的话有两个解决办法: 方法一:使用非捕获组 如果不需要对捕获组的内容调用,可以使用非捕获组,...:就可以了,表示只捕获数据了,只用来表达条件。 回到我们前面的案例,英文句子中匹配单词,怎样才能完整显示呢?...方法二:使用迭代函数finditer 将findall函数改为迭代函数finditer import re match_result = re.finditer(r"\b([a-z])([a-z])[a-z
当Go语言执行到一个defer语句时,不会立刻执行defer后面的函数,而是将其推入到一个栈中。然后在函数返回前,按照后进先出LIFO的顺序执行栈中的函数调用。...注意: defer语句中的函数会在return语句更新返回值变量后再执行。这意味着你可以在defer函数中修改返回值。...虽然return语句返回的是0,但是由于defer语句在return语句后执行,所以最终函数的返回值会变成1。...:new返回的是指向类型零值的指针,而make返回的是初始化后的(非零)值。...零值和初始化:new分配的内存被清零,也就是说,对于所有的类型,new函数都返回一个指向零值的指针。而make则返回一个已初始化的值,而不是零值。
捕获分组将括号中的内容作为子表达式进行捕获匹配,将匹配的子表达式(即组的内容)返回,结果是['.jpg','.jpg']。...search()和match()函数非常相似,它们的区别如下所示 search():在输入字符串中查找,返回第一个匹配内容,如果找到一个则match对象,如果没有找到返回None match():在输入字符串开始处查找匹配内容...1.5.2 findall()和finditer()函数 findall()和finditer()函数非常相似,它们的区别如下所示 findall():在输入字符串中查找所有匹配内容,如果匹配成功,则返回...match列表对象,如果匹配失败则返回None finditer():在输入字符串中查找所有匹配内容,如果匹配成功,则返回容纳match的可迭代对象,通过迭代对象每次可以返回一个match对象,如果匹配失败则返回...代码第②行的finditer()函数返回可迭代对象。
领取专属 10元无门槛券
手把手带您无忧上云