扫码关注官方订阅号
javascript新版本中,允许使用多行文本引号
var html = ` <p></p> <p></p> `;
有没有方法可以判断浏览器是否支持这个引号呢?
人生最曼妙的风景,竟是内心的淡定与从容!
以上三个答案中只有 @不爱吃西红柿的鱼 君的是正确的。
这里补充一下为什么另外两个是错误的原因。
JavaScript 具有两种类型的错误。JavaScript 语法定义了一些错误在编译时报错,而所有其他错误则在运行时报错。
https://github.com/getify/You... 写到,
特殊的,一直以来有很多需要被捕获和报告为 “早期错误” 的特定条件 (在编译期)。任何直截了当的句法错误是早期错误 (e.g., a = ,), 然而语法也定义了一些句法上有效但仍然不允许的东西。 由于你的代码仍未执行,这些错误无法用 try..catch 捕获; 他们直接在你的程序的解析/编译阶段失败。
特殊的,一直以来有很多需要被捕获和报告为 “早期错误” 的特定条件 (在编译期)。任何直截了当的句法错误是早期错误 (e.g., a = ,), 然而语法也定义了一些句法上有效但仍然不允许的东西。
a = ,
由于你的代码仍未执行,这些错误无法用 try..catch 捕获; 他们直接在你的程序的解析/编译阶段失败。
try..catch
而根据 https://github.com/getify/You... 所补充,
在你的程序中具有一个句法错误阻止它运行,而这也阻止你的程序随后根据此特性是否受支持而做出不同响应。 为了通过对句法相关特性进行特性检测而元编程,我们需要一种方式以把测试从我们的程序运行所在的初始编译步骤中隔离出来。比如说,如果我们可以把测试用代码存储在一个字符串中,那么 JS 引擎就不会默认试着编译字符串的内容,直到我们要求它这样做。 你准备直接用 eval(..) 了么? 没这么快。参见本系列的 Scope & Closures 部分以获取为什么 eval(..) 是个坏主意。然而还有一个具有更少负面效应的选项: Function(..) 构造函数。
在你的程序中具有一个句法错误阻止它运行,而这也阻止你的程序随后根据此特性是否受支持而做出不同响应。
为了通过对句法相关特性进行特性检测而元编程,我们需要一种方式以把测试从我们的程序运行所在的初始编译步骤中隔离出来。比如说,如果我们可以把测试用代码存储在一个字符串中,那么 JS 引擎就不会默认试着编译字符串的内容,直到我们要求它这样做。
你准备直接用 eval(..) 了么?
eval(..)
没这么快。参见本系列的 Scope & Closures 部分以获取为什么 eval(..) 是个坏主意。然而还有一个具有更少负面效应的选项: Function(..) 构造函数。
Function(..)
以下是我修改的 @不爱吃西红柿的鱼 的答案 (把 eval 换成 new Function):
eval
new Function
function supportStrTpl(argument) { var support = false; try { new Function('let a = 1; (`${a}b`)'); support = true; } catch (e) { console.log(e) } return support; } console.log(supportStrTpl());
function supportStrTpl(argument) { let support = false; try { eval('let a = 1; (`${a}b`)'); support = true; } catch (e) { console.log(e) } return support; } console.log(supportStrTpl());
try一下
try{ var html = ` <p></p> <p></p> `; }catch(e){ }
这是es6的特性,判断可以用
try{ var a = 1, b = `c${a}d`; //support } catch(e){ // not support }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
以上三个答案中只有 @不爱吃西红柿的鱼 君的是正确的。
这里补充一下为什么另外两个是错误的原因。
JavaScript 具有两种类型的错误。JavaScript 语法定义了一些错误在编译时报错,而所有其他错误则在运行时报错。
https://github.com/getify/You... 写到,
而根据 https://github.com/getify/You... 所补充,
以下是我修改的 @不爱吃西红柿的鱼 的答案 (把
eval换成new Function):try一下
这是es6的特性,判断可以用