从 ES2015 及更高版本开始,对我的代码影响最大的功能是解构、箭头函数、类和模块系统。...= null) { name = movie.director.name; } ?. 通过减少两行代码简化了 getDirector() 函数。这就是为什么我喜欢可选链的原因。...你可以在同一表达式中自由使用多个可选链运算符。甚至可以用它安全地访问数组项! 下一个任务编写一个返回电影主角姓名的函数。...如果 variable 是 undefined 或 null,则表达式 variable ?? defaultValue 的结果为 defaultValue。...我为什么喜欢它? 我喜欢可选链运算符,因为它允许轻松地从嵌套对象中访问属性。它可以防止编写针对访问者链中每个属性访问器上的空值进行验证的样板代码。
4.问:为什么使用pip命令安装扩展库是提示“不是内部或外部命令,也不是可运行的程序或批处理文件”?...答:调用函数时,位置参数的数量必须符合函数定义,如果函数要求接收2个位置参数,那么调用时也应传递2个位置实参。...19.问:已知x是一个字符,我想使用x+1得到下一个字符,为什么提示“TypeError: can only concatenate str (not "int") to str”呢?...答:Python不支持字符和整数相加,如果想得到下一个字符,可以使用表达式chr(ord(x)+1)。...24.问:我机器上明明是有test.txt这个文件的,为什么使用内置函数open()打开时提示文件不存在呢? 答:如果文件test.txt不在当前文件夹中,在打开或读写时必须指定完整路径。
它必须是一个表达式 如果语句以关键字function开头,解析器会期望它是一个函数声明(参见Expressions Versus Statements)。但是函数声明不能立即调用。...检查value是否是T的实例如下: value.isT(): T实例的原型必须从这个方法返回true;一个常见的超级构造函数应该返回默认值false。...特别是当涉及到星际飞船中的代码点时,您必须小心。第二十四章解释了详细信息。 创建正则表达式 您可以通过文字或构造函数创建正则表达式,并通过标志配置其工作方式。...但是您必须意识到您不能这样做,即使是在快速的 hack 中也不行。 问题 2:/g正则表达式作为参数 调用test()和exec()多次的代码在作为参数传递给它的正则表达式时必须小心。...如果您需要进行多次搜索和替换,则此函数特别方便。然后要搜索的值必须是设置了global标志的正则表达式。使用quoteText(),您可以使用任意字符串。
当你引用一个没有定义的变量时,抛出一个ReferenceError; 当你使用变量的时候,这个变量必须要声明,或者你可以确保它在你当前的脚本或作用域 (scope) 中可用。...4、SyntaxError: Invalid or unexpected token 含义:捕获无效或意外的标记 为什么报错?...访问或设置未定义(undefined)或null值的属性时会发生这种报错。...一种简单且适用于小型属性链的方法是使用逻辑运算符&&。...let obj = undefined console.log(obj&&obj.id) 7、TypeError: 'x' is not a constructor 含义:表示 ‘x’不是构造函数 为什么报错
当你引用一个没有定义的变量时,抛出一个ReferenceError; 当你使用变量的时候,这个变量必须要声明,或者你可以确保它在你当前的脚本或作用域 (scope) 中可用。...} ---- SyntaxError: Invalid or unexpected token 含义:捕获无效或意外的标记 为什么报错?...访问或设置未定义(undefined)或null值的属性时会发生这种报错。...let obj = undefined console.log(obj&&obj.id) ---- TypeError: 'x' is not a constructor 含义:表示 ‘x’不是构造函数...在代码中出现了无效的正则表达式的标记。
从 ES2015 开始,对我代码影响最多的功能是解构、箭头函数、类和模块系统。 截至 2019 年 8 月,一项新提案 optional chaining 达到了第3阶段,这将是一个很好的改进。...你可以在同一表达式中使用多个optional chaining 运算符。甚至可以使用它来安全地访问数组项目! 接下来的任务是编写一个返回电影主角名字的函数。...处理 undefined或null,将它们默认为特定的值。 如果 variable 是undefined或null,则表达式 variable ??...必须只在可能无效的属性附近使用:maybeNullish?.prop。在其他情况下,使用旧的属性访问器:.property 或 [propExpression]。 回想一下 movie 对象。...为什么我喜欢它? 我喜欢 optional chaining 运算符,因为它允许从嵌套对象轻松访问属性。它可以减少通过编写样板文件来验证来自访问器链的每个属性访问器上无效值的工作。
如果你是个初学者,可以使用此文章来更深入了解JavaScript。我希望这篇文章会激励你花更多的时间阅读规范。 如果你是高级开发人员,你可以将这些示当做你公司面试的重要资源。...文中符号说明 // ->用于显示表达式的结果。例如: 1 + 1 // -> 2 // ->表示 console.log 或着其他什么输出。...null // -> false null == false // -> false 同时,其他的假值,如0或‘’等于false。...标签函数的第一个参数是一个包含字符串的数组。其余的参数与表达式有关。...这就是为什么我们得到字符串'[object Object]'。
如果变量包含非空值(例如对象),则表达式existObject === null的计算结果为false。 2.1 null 是虚值 null与false、0、''、undefined、NaN都是虚值。...有趣的是,type null的结果是什么 typeof null; // => 'object' 为什么是'object',typoef null为object是早期 JS 实现中的一个错误。...4. null 的替代方法 当无法构造对象时,我们通常的做法是返回null,但是这种做法有缺点。在执行堆栈中出现null时,刚必须进行检查。...5. null vs undefined undefined是未初始化的变量或对象属性的值,undefined是未初始化的变量或对象属性的值。...// => true 我使用双等相等运算符检查变量是否为null 或undefined: function isEmpty(value) { return value == null; } isEmpty
它们似乎都定义了空值,而且,比较null == undefined的计算结果为true。 大多数现代语言,如Ruby、Python或Java都有一个空值(nil或null),这似乎是一种合理的方式。...为什么修改后的版本优于初始版本?...因此,使用表达式favoriteMovie.actors[0]访问undefined值的第一项会引发TypeError。...在不同的场景中,这些对象可能具有不同的属性集,因此,必须手动处理所有这些场景: 接着我们实现一个函数append(array, toAppend),它的主要功能在数组的开头和/或末尾添加新的元素。...在其他情况下,你知道变量期望保存一个对象或一个函数来返回一个对象。但是由于某些原因,你不能实例化该对象。在这种情况下,null是丢失对象的有意义的指示器。
JavaScript时,大约是八年前,当时我对于undefined 和 null 比较困惑 ,因为他们都表示空值。...相关的常见错误消息是: TypeError:'undefined'不是函数 TypeError:无法读取未定义的属性''' 和类似type errors。...=='undefined':验证属性值的类型 *obj.hasOwnProperty('prop'):验证对象是否拥有自己的属性 obj`中的'prop':验证对象是否有自己的或继承的属性 我的建议是使用...=> 4 Tip 7: 不要相信自动分号插入 以下JavaScript语句列表必须以分号(;)结尾: 空的陈述 let,const,var,import,export声明 表达式语句 调试器语句...这些是有间隙的数组,即在某些索引中没有定义元素。 当在一个稀疏数组中访问一个间隙(又名空槽)时,你也会得到一个'undefined`。
表达式 表达式产生一个值,并且可以在期望值的任何地方编写,例如,在函数调用的参数中或赋值的右侧。...命名函数表达式看起来像函数声明(语句): function foo() { } 前面的结构要么是一个命名的函数表达式,要么是一个函数声明。...函数必须在作用域的顶层声明 在严格模式下,所有函数必须在作用域的顶层声明(全局作用域或直接在函数内部)。这意味着您不能将函数声明放在块内。如果这样做,您将收到一个描述性的SyntaxError。...检查未定义或 null 大多数函数允许您通过undefined或null指示缺少值。检查它们两者之一的一种方法是通过显式比较: // Does x have a value? if (x !...未定义和 null 的历史 单个非值可以扮演undefined和null的角色。为什么 JavaScript 有两个这样的值?原因是历史性的。
我刚刚开始学习JavaScript时,大约是八年前,当时我对于undefined 和 null 比较困惑 ,因为他们都表示空值。 他们有什么明确的区别吗?...相关的常见错误消息是: TypeError:'undefined'不是函数 TypeError:无法读取未定义的属性''' 和类似type errors。...你可以在函数范围的末尾声明一个var变量,但是它仍然可以在声明之前被访问:并且你会得到一个undefined。 function bigFunction() { // code......=='undefined':验证属性值的类型 *obj.hasOwnProperty('prop'):验证对象是否拥有自己的属性 obj`中的'prop':验证对象是否有自己的或继承的属性 我的建议是使用...这些是有间隙的数组,即在某些索引中没有定义元素。 当在一个稀疏数组中访问一个间隙(又名空槽)时,你也会得到一个'undefined`。
背景: 在 ES2020 之前,如果要访问 JavaScript 中对象的嵌套属性,则必须在每个级别检查是否为 null 或 undefined,否则最终将会抛出 TypeError。...为了避免出现 TypeError,我们将不得不创建临时变量或执行一系列增量 && 调用,这看起来很丑陋,并且同时占用了空间和时间。...链式运算符,不同之处在于,在引用为空 (nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。...如果obj.first 是 null 或者 undefined,表达式将会短路计算直接返回 undefined。...name; 短路计算 当在表达式中使用可选链时,如果左操作数是 null 或 undefined,表达式将不会被计算,例如: let potentiallyNullObj = null; let x =
此外,可以使用|null或使用现有的?...如果你想进一步了解 JIT 对 PHP 的作用,可以阅读我在这里写的另一篇文章。...不过,加入它的决定也是有理由的:在 PHP 中,缺少某种类型可能有很多后果: 函数不返回任何内容或返回 null 我们期望的是某种类型 我们期望的类型在 PHP 中无法被类型提示 由于上述原因,增加mixed...根据情况你会得到INF、-INF或NAN,而不是错误。 新的 get_debug_type() 函数 get_debug_type()返回一个变量的类型。听起来像gettype()的功能?...一致的类型错误 现在 PHP 的用户定义函数会抛出TypeError,但内部函数并不会,而是发出警告并返回null。从 PHP 8 开始,内部函数的行为也是一样了。
: fn is not a function 这里要补充个重要的知识点:由于通过条件语句控制函数声明的行为并未标准化,因此在不同环境下可能会得到不同的结果。...18 } 19}else { 20 foo = function(){ 21 console.log('4'); 22 } 23} 24foo(); 注意,这里第二个示例为什么我注释为伪正确示例...看下面这段关于函数声明规则官方摘录: 函数声明只能出现在程度或函数体内。从句法上讲,它们不能出现在块中,比如不能出现在if、while或for语句。因为块只能包含语句,而不能包含函数声明这样的源元素。...而唯一可能让表达式出现在块中的情形,就是让它作为表达式语句的一部分。但是规范也明确规定表达式语句不能以function开头。而这实际上就是说,函数表达式同样也不能出现在语句或块中。...由于存在上述限制,只要函数出现在块中,实际上就可以看作是一个语法错误,而不用管什么函数声明或表达式。 所以较佳实践应是,不要把函数写在语句或块中,不管是声明函数还是表达式函数。
静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。由于freddie是一个子级对象,函数不会传递,所以在freddie实例上不存在freddie方法:抛出TypeError。...,为什么样做是对的?...如果它是一个表达式,就像在这种情况下一样,它会计算表达式。表达式为10 * 10 + 5计算得到105。 ---- 22. cool_secret可以访问多长时间?...JavaScript中的所有内容都是… A:原始或对象 B:函数或对象 C:技巧问题!只有对象 D:数字或对象 答案: A JavaScript只有原始类型和对象。...我们将它们连接起来,得到[1,2,0,1,2,3]。 ---- 41. 下面代码的输出是什么? !!null; !!""; !!
静态方法仅在创建它们的构造函数中存在,并且不能传递给任何子级。 由于freddie是一个子级对象,函数不会传递,所以在freddie实例上不存在freddie方法:抛出TypeError。...,为什么样做是对的?...如果它是一个表达式,就像在这种情况下一样,它会计算表达式。 表达式为10 * 10 + 5计算得到105。 ---- 22. cool_secret可以访问多长时间?...JavaScript中的所有内容都是… A:原始或对象 B:函数或对象 C:技巧问题!只有对象 D:数字或对象 答案: A JavaScript只有原始类型和对象。...我们将它们连接起来,得到[1,2,0,1,2,3]。 ---- 41. 下面代码的输出是什么? !!null; !!""; !!
,为什么样做是对的?...如果它是一个表达式,就像在这种情况下一样,它会计算表达式。 表达式为10 * 10 + 5计算得到105。 ---- 22. cool_secret可以访问多长时间?...我刚给它的原型添加了一个方法。 原始类型的字符串自动转换为字符串对象,由字符串原型函数生成。 因此,所有字符串(字符串对象)都可以访问该方法!...JavaScript中的所有内容都是… A:原始或对象 B:函数或对象 C:技巧问题!只有对象 D:数字或对象 答案: A JavaScript只有原始类型和对象。...我们将它们连接起来,得到[1,2,0,1,2,3]。 ---- 41. 下面代码的输出是什么? !!null;!!"";!!
你学或不学,它就在那里;你想或不想,你都得学。 大一的时候,我选了一门名为《Android应用程序开发》的选修课。那个时候啥都不懂,就感觉这个名字比较高端,然后就去了。...我现在是相当的佩服那个老师,他自己从事的Android开发,让学生学数据库。那应该算是我第一次接触数据库这种东西,从此对它念念不忘(论一个老师对学生的影响力!)...NULL的数据行数,而COUNT()会得到NULL之外的数据行数 聚合函数会将NULL排除在外,但是COUNT(*)例外。...函数(当前时间) CURRENT_TIMESTAMP函数(当前日期和时间) EXTRACT函数(截取日期元素) CAST函数(类型转换) COALESCE函数(将NULL转换为其他值) CASE 表达式...原则上,窗口函数只能在SELECT子句中使用 超级分组记录默认使用NULL作为聚合键 ROLLUP可以同时得出合计和小计 使用GROUPING函数能够简单分辨出原始数据中的NULL和超级分组记录中的NULL
领取专属 10元无门槛券
手把手带您无忧上云