说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

【探秘ES6】系列专栏:模版字符串

HTML文档下载 WORD文档下载 PDF文档下载
新一代JavaScript标准,ES6即将发布。【探秘ES6】系列专栏将一一剖析ES6的诸多新特性,让Web开发者对此有清晰全面的了解。本文为系列的第四篇,带你了解ES6的模版字符串(Template Strings)。

ES6作为新一代JavaScript标准,即将与广大前端开发者见面。为了让大家对ES6的诸多新特性有更深入的了解,Mozilla Web开发者博客推出了《ES6 In Depth》系列文章。CSDN已获授权,将持续对该系列进行翻译,供大家学习借鉴。本文为该系列的第四篇。

前两次学习了生成器和迭代器以后,脑袋有没有一团浆糊?哈哈。我承诺过本次我们将学习一些简单的东西。

那我们现在就开始吧!

“小句号”的基本使用

ES6新引入了一种新的字符串语法——模版字符串(Template Strings),它看起来和普通的字符串很像,区别在于它不是由单引号'或者双引号"来闭合,而是使用`(俗称:小句号)。我们来看个最简单的例子,它们其实就是字符串而已:

context.fillText(`Ceci n'est pas une chaîne.`, x, y);

但是既然它被叫做“模版字符串”,那它应该不仅仅是用小句号来闭合的普通字符串吧?模版字符串让JavaScript有了一个简单的字符串插值功能——既写法美观又能很方便地将JavaScript变量替换到字符串中。

很多情景下都可以用到它,但最打动我的是它在毫不起眼的错误消息中的使用:

function authorize(user, action) {  if (!user.hasPrivilege(action)) {    throw new Error(      `User ${user.name} is not authorized to do ${action}.`);  }}

在这个例子中,${user.name}和${action}被称作模版替换位。在生成的字符串中,JavaScript会用使用user.name和action的变量值来替换字符串的模版替换位。最后生成的字符串为:User jorendorff is not authorized to do hockey(你可以自己试试,我可没忽悠你)。

目前为止,它只是个比+(加号连接符)在语法上略微美观一些而已,你可能想了解更多关于它的细节:

  • 模版替换位中的代码可以是任何JavaScript的表达式,比如函数调用、算数运算等等都是允许的(只要你乐意,你甚至可以在模版字符串中嵌套模版字符串,有种模版中的《盗梦空间》的感觉)。
  • 如果插入的值不是字符串,它将被转换为字符串。例如,如果action是个对象,它的.toString()方法将会被调用。
  • 如果你的模版字符串中包含 ` (小句号),需要使用转义字符`\``,效果相当于 "`"。
  • 举一反三,如果你的模版字符串中需要 ${ 这两个字符,我不想去关心你为什么要这么写,但是你可以使用转义其中任意一个字符:`write \${  或者 $\{`。

与普通字符串不同的是,模版字符串可以写成多行:

$("#warning").html(`  <h1>Watch out!</h1>  <p>Unauthorized hockeying can result in penalties  of up to ${maxPenalty} minutes.</p>`);

在模版字符串中,所有空格、换行、缩进都是逐字输出的。

好的,就像我上篇文章所承诺的,我觉得我必须对你大脑的健康负责。所以给一个小小的警告:接下来的内容就比较费脑一点了。你可以现在就放弃阅读,喝杯咖啡享受一下,放松一下大脑。认真地说,不用为放弃下面的内容而感到羞愧噢。 当Lopes Gonçalves穿过了赤道,证明了不会被可怕的海怪吃掉或掉进地球的尽头,然后他还需要去航行整个完整的南半球来增加论证吗?不需要!他返航了,回到家吃了顿美美的午餐。换做是你也会这么做,对不对?

深入讨论“小句号”

我们来讨论一些模版字符串的局限性。

  • 它不会为你自动转义关键字。为了防止脚本注入,你需要认真小心对待那些不受信任的数据,就像你曾经小心地拼接字符串一样。
  • 它并没有明确地说明如何配合国际化库(一个针对用户所处的国家/语言不同来国际化你的代码的库)来使用。模版字符串不会处理特定语言的数字、日期等的格式化。
  • 它并不能代替像Mustache、Nunjucks这样的模板库。

模版字符串没有内置针对循环的语法——通过数组来循环生成一个HTML表格;甚至条件语句也不支持。(当然,你可以使用模版嵌套来实现,但是这样的方法太笨拙,我认为不可取。)

ES6在模版字符串中为JS开发者和库设计人员提供了一种解决方案来帮助他们处理这些局限性问题。这个特性被称做模版标记。

模版标记的语法很简单。我们只需要在“小句号”的前面加一个额外的标记。在我们接下来的第一个例子中,SaferHTML就是它的标记,我们使用这个标记来处理上面列表中的第一个局限性问题:自动转义关键字。

必须清楚SaferHTML并不是ES6标准库中的内容。在下面我们将会自己来实现它。

var message =  SaferHTML`<p>${bonk.sender} has sent you a bonk.</p>`;

这里使用了一个标识符SaferHTML来作为标记,标记也可以是一个属性——SaferHTML.escape,甚至可以是一个函数调用——SaferHTML.escape({unicodeControlCharacters: false})。(说明一下,任何ES6的MemberExpressio类或CallExpression类都可以作为标记使用)。

可以看出不含标记的模版字符串适用于简单的字符串拼接。标记模版完全适用于其它场景:如函数调用。

上面的代码与这段等效:

var message =  SaferHTML(templateData, bonk.sender);

templateData 是由模版的字符串部分所组成的不可变数组,由JS引擎为我们提供。下面是一个拥有两个元素的数组,因为在标记模板中他们被模版替换所分割,有两个字符串部分。所以templateData 应该是这个样子的: Object.freeze(["<p>", " has sent you a bonk.</p>"]。

(实际上templateData 还有一个属性。我并不打算在这篇文章中用到它,为了完整性我还是提一下: templateData.raw 是另一个囊括了标记模版中所有字符串部分的数组,它的源码就和它的名称(raw)一样原始——还保留着\n这样的转义序列,而不是被转到新的一行等。标准的String.raw使用了最原始的字符串。)

这样就给了SaferHTML函数很大的自由度,可以用很多可选的方法去解析字符串和替换字符。

现在你一定想弄清楚SaferHTML究竟是怎么实现的,或许你想亲手来尝试实现它。它终究只是个函数而已。你可以再Firefox的控制台中测试一下。

下面是其中一种方式(查看Gist上的例子)。

function SaferHTML(templateData) {  var s = templateData[0];  for (var i = 1; i < arguments.length; i++) {    var arg = String(arguments[i]);    // Escape special characters in the substitution.    s += arg.replace(/&/g, "&")            .replace(/</g, "<")            .replace(/>/g, ">");    // Don't escape special characters in the template.    s += templateData[i];  }  return s;}

定义了这个方法以后,SaferHTML`<p>${bonk.sender} has sent you a bonk.</p>`将会被解析为 "<p>ES6&lt;3er has sent you a bonk.</p>"。那么你的用户传入的值都是安全的,即使有人恶意地将bonk.sender 赋值为 "Hacker Steve <script>alert('xss');</script>",返回的也是不可执行的字符串,无论这段字符串的含义是什么,都不会有安全漏洞。

(顺便说一句,如果你觉得函数使用参数对象的方式让你感觉这样很笨重,我们下次将换用另一种方法。ES6还有另一个我认为你会喜欢的新特性。)

一个例子并不能说明标记模版的灵活性。让我们再来看看我们能为之前列出的那些模版字符串的局限性做些什么改进。

  • 模版字符串不自动转义特殊字符。但是我们已经看到了,使用标记模版我们就能解决这个问题。实际上,我们能做得更好。

从安全性的角度来看,我的SaferHTML函数功能性非常弱。HTML中不同的地方有不同的关键字需要不同的转义方式。SaferHTML把它们全部都转义,但是我们可以再付出一些努力把SaferHTML写的更精明一点,完全按照字节来解析templateData中的字符串,这样我们就知道哪些替换位是在纯HTML中;哪些是在元素属性中,这些 ‘ 和 “ 就需要转义;那些在URL查询字符串中需要使用URL转义而不是HTML转义等等。它可以准确地对每个替代位进行正确的转义。

也许你会有疑问——HTML解析效率低,这方法是不是很牵强?幸运的是标记模版的字符串部分是固定不变的。SaferHTML可以将这部分的解析结果缓存起来,这样就可以提高运行速度了。(这个缓存可以是一个WeakMap,WeakMap是ES6的新特性,我们在以后的文章中将会对它有所讨论。)

  • 模版字符串没有涉及国际化相关的特性。好在有了标记,这个问题就迎刃而解。Jack Hsu发表了一篇博客为我们迈出了这第一步。下面是一个例子:

i18n`Hello ${name}, you have ${amount}:c(CAD) in your bank account.`// => Hallo Bob, Sie haben 1.234,56 $CA auf Ihrem Bankkonto.

注意,在这个例子中name和amount是JavaScript,但是这里有一个我们不熟悉的语句——:c(CAD),Jack把它放到了模板的字符串部分。JavaScript理所当然由JavaScript引擎来处理,而字符串部分则有Jack的i18n标记来处理。我们可以从i18n的文档中知道:c(CAD)表示加拿大元,那么amount则表示了加拿大元的数额。

这就是标记模板的作用了。

  • 它并不能代替像Mustache 、Nunjucks这样的模板库,大部分原因是因为它没有内置对循环和条件句的支持。那么现在我们一起来看看如何解决这个问题,准备好了吗?

如果JS没有为我们提供某个特性,那我们就自己写一个!

// Purely hypothetical template language based on// ES6 tagged templates.var libraryHtml = hashTemplate`  <ul>    #for book in ${myBooks}      <li><i>#{book.title}</i> by #{book.author}</li>    #end  </ul>`;

它的灵活性还不止于此。记住,标记函数的参数不会自动转换为字符串。它的返回值也是这样,它们可以是任何类型,标记模版不一定是字符串!你可以使用自定义标签来创建自定义正则表达式、DOM树、图片、完整的异步流程、JS数据结构、GL着色器等等。

标记模版鼓励库开发人员去创建强大的基于特定领域的语言。这些语言看起来一点也不像JS,但是他们可以无缝地嵌入JS中并且可以智能地与其它语言进行交互。现在,我想不出其它任何有类似特性的语言,我不知道这个特性将来会给我们的开发带来什么改变,但这个改变应该是令人惊喜的。

我什么时候可以开始使用模版字符串?

在服务端,io.js已经开始支持模版字符串了。

浏览器里,FireFox 34+已经支持模版字符串。去年夏天Guptha Rajagopal已经把它作为一个实习项目。Chrome 41+也支持模板字符串,IE和Safari不支持。现在,如果你想在web项目中使用模版字符串你需要用到Babel或Traceur来支持;你也可以在TypeScript中使用。

在Markdown中可以使用吗?

嗯? 

哦……这是一个好问题。

(这一部分与JavaScript无关。如果你不使用Markdown,可以跳过这一段。)

Markdown和JavaScript都使用 ` 来作为模版字符串的特殊字符。实际上,在Markdown中

它是内联文本的定界符。

如果你在Markdown中用下面的方式来写是会有问题的:

To display a message, write `alert(`hello world!`)`.

显示的结果为:

To display a message, write alert(hello world!).

请注意,在输出中是不会有小句号的。Markdown把这个四个小句号都解释为定界符,在输出结果中被HTML标记替换掉了。

为了避免这种情况,我们一开始在Markdown就采用了一种比较少见的特性:使用多重小句号来作为代码定界符,如下:

To display a message, write ``alert(`hello world!`)``.

可以到Gist上去查看更多细节,它是由Markdown写的,你可以查看源码。

下期预告

下篇文章,我们将学习两个新特性,在其它语言中这两个特性已经被程序员们愉快地使用了几十年了:其中一个是为了那些喜欢尽量避免使用参数的开发人员准备的,另一个是给那些喜欢使用很多参数的人准备的。当然,两种特性都为我们提供了,我们可以根据个人对函数的使用习惯来选择。

这些特性可以直接在Firefox中测试,所以下次我们一起来试一下吧,我们的客座来宾Benjamin Peterson将为大家讲解ES6的default parameters和rest parameters。(译者:向渝 责编:陈秋歌)

原文链接:ES6 In Depth: Template strings

本译文遵循Creative Commons Attribution Share-Alike License v3.0 

相关阅读:

【探秘ES6】系列专栏:ES6简介

【探秘ES6】系列专栏:迭代器和for-of循环

【探秘ES6】系列专栏:生成器

欢迎加入CSDN前端交流群:218126086,进行前端技术交流。  

VB怎样把VC++代码转换成VB代码 字符串中包含双引号-VB资料 字符串中文的问题 -VB资料 巧用CLIPBOARD建立图像数据库-VB资料 在VB中存取数据库中的图片 Access97的报表解决方案-VB资料 Access下如何使用通用对话框-VB资料 ADO简介 -VB资料 ADO三大对象的属性、方法、事件及常数(二)-VB资料 ADO三大对象的属性、方法、事件及常数(三)-VB资料 ADO三大对象的属性、方法、事件及常数(一)-VB资料 Data 控件使用有密码的 Access 数据库 -VB资料 Excel、Access、VB的结合应用 Microsoft SQL Server 7.0安装问题(二)-VB资料 主题: MDB文件的导出 使用 DAO-VB资料 Microsoft Access秘密、技巧和陷阱-VB资料 SQL的基本操作(1.数据类型) -VB资料 SQL的基本操作(2.数据库的相关操作)-VB资料 SQL的基本操作(3.表的相关操作) -VB资料 SQL的基本操作(4.数据的检索)-VB资料 SQL在VB中的使用及访问远程数据库 Text 转换为 Access MDB -VB资料 VB5.0数据库基础 非编程方式访问数据库-VB资料 VB用编程方式访问数据库 VB 5.0数据库设计技术讲座(4) VB5.0数据库编程经验小集 VB5在处理数据库时的几个“BUG” VB6.0中的几个新增数据库工具 VB处理数据库时求数据表记录总数的最佳方法 VB访问数据库的方案比较 用delphi编程,用什么触摸屏比较好啊? 怎样在程序运行时增加子菜单(要增加的数目是未知的) 关于Sprite动画 出售代码 ACCESS的FORMS DLL调用函数问题 VB在ACCESS中应用的一个小问题! ACCESS中的FORMS问题? 再普通不过的一个问题 delphi6中还有BDE和ADO吗?它们被淘汰了吗?现在还有必要用它们来学数据库的开发吗? 50分答谢!!!---这个css定义为什么会出现这样的效果??? 各位:怎么判断表里某个字段是否存在? 纯技术问题:精通“书签“与“层“的大虾请进!!!! 一个奇怪的现象,请教高手这是怎么回事? 哪里有破解清华五行卫士密码的软件? vc++7.0好用吗? 吃完晚饭了... 可不可以让 CppWebBrowser1的背景不是白色? 热热热!!!热疯了!!! 我的喇叭哪儿去了? 我的PB程序出了问题了!!! sql server中哪个函数是用于字符串与整型之间转换的? 我想限定文本输入框只能输入10个汉字或20个英文字符,但文件输入框却只能输入10个英文字符,如何解决? 当我将这样的字符串“dsdsdsdfsdffsdsdfsdfsfdsdfsdfsfsfdsdffs.....”放入我的表格中时,无论怎样设置也不折行,影响了部局,如何解决? MFC中视图(view)是怎样随着主窗口的大小改变而改变的。 急!请教!!猫猫连接,用数据管道同时访问两库,访问不到对方的网络库(sybase) 关于电影下载 我已经把一个exe文件加入到我自己的程序中了,请问在我的程序中应该样调用该exe文件呢? 哪位高手知道RTF格式的含义?或者更好,知道Rxlib中的RXRICHEDIT控件中识别RTF格式的方法? Delphi编写的DLL在VC下不能使用 请问哪儿有电工的<>的电子版下载?我只有这么多了 msdn2001年4月版的讨论 请问哪儿有电工的<>的电子版下载? 请教高手!!!! 请进 各位:周末愉快!为何我的多表查询用updatebatch提交时总是报错? 我不明白!!!! 请问,BAS 与 VBJ 有什么区别吗?为何他们安装在同一个目录呢? 如何得到系统进程的列表? vi下如何撤销操作? 我们知道MFC中的对象序列化做得很好,不知在DELPHI中怎样来实现对象的序列化? 我已经学过C++,想学VC++请问哪本书入门比较好啊? 欢迎使用技巧酷skillstore beta 1.00 有个可以显示IP的QQ,很不可思议,讨论一下好吗? 怎样在程序运行的时候加上参数,比如说双击文本文件打开记事本 谁有运行后烧硬件的程序 用VC开发如何实现网页的同步浏览呢? 动态产生的datawindow怎样调整它的显示? 怎么从ORACLE白痴到高手 怎样通过程序员考试??????? 庆祝北京成功 COM基础问题 初二科学大气压的题高压锅盖上有一个空心柱为排气孔,空心柱上戴着一个帽子为限压阀,当高压锅内气体压强超过安全值时,锅内气体就会冲出限压阀,气体跑出一部分,使锅内气体压强减小.现 49,51,12,37,1,0.5,85中哪些是质数,哪些是合数,哪些是偶数,哪些是奇数 含FeS265%的硫铁矿在煅烧时有1.8%的硫损失而混入炉渣,二氧化硫转化为三氧化硫的利用率为99%.由这种硫铁矿制2t98%的硫酸,需硫铁矿多少吨?老师时这么算的 根据硫元素守恒 fes2~2so2~2so3~2h2so4120 98 初二的科学关于大气压如图所示,盛水容器中浮着一装有水的小杯A,倒扣一小杯B,给容器加热并使容器中水沸腾,再继续加热时,A、B杯中的水能否沸腾,为什么? 下列数中,是质数的是17 27 57 87 在250mL HgCl2溶液里放入75gCu片,反应一段时间后,把Cu片从溶液中取出洗净干燥,称其质量为76.37g.取上述溶液25mL,向其中加入0.2mol/L AgNO3溶液20mL两者恰好完全反应.有一段我看不懂):由反应前后氯 体积为1×10的-3次方立方米的酒精,质量为多少kg.将它倒入一个质量为0.2kg、底面积为1×10的-2次方平方米的平底容器中,放在水平桌面上,容器对桌面的压强为多少Pa?〔酒精的密度为0.8×10的3次 一米的九分之五米是几米? 1.把含有某一种氰化物杂质的Mgcl2粉末47.5溶于水,与足量硝酸银溶液反应,生成沉淀氯化银150mg,则该氯化镁中的杂质可能是 氯化铝 氯化钠 氯化钾 氯化钙 2 .在碘酸碘中,碘元素呈+3和+5两种价态, 关于重力的疑问 (7 8:51:20)物体的重力可以不在物体上吗? 7米的九分之一与1米的九分之七长度相等吗 有Na2CO3和K2CO3的混合物12.52g,与足量盐酸反应,产生2.24L(S.T.P)CO2,求混合物中Na2CO3的百分含量.(要有过程) 有一个瓶子,装满水后总质量为210g,在瓶中放进一块质量为45g的金属片,然后再装满水,总质量为251g,该金属的密度是多少?为什么这样做? 7分之6比多少米短5分之1米,比9分之6米长的是 求简洁方法4%的NAOH溶液500g与足量盐酸反应,可生成多少摩尔NaCl?要求不求NaCl质量直接求物质的量,麻烦说明为什么,我上课没听懂谢谢. 水的密度 (5 12:1:17)有一枚奥运会的纪念币,它的质量是16.1克.为了测量它的体积,把它放入一盛满水的量筒中,侧得溢出的水重为1.8×10-2牛.〔1〕求制作纪念币的金属密度;〔2〕盛满水的量筒在 新概念英语的第43、67、91、99课的题目是什么?第一本,题目中文和英文都要.要百分百正确哦 2+9分之4=( ) 3-6分之1-6分之5=( ) 4-12分之5=( ) 求解,15.17.18.19 急,好评的 新概念英语第一册99课文 9.84÷5分之3 5又12分之5÷1.3 水的沸腾 (13 18:15:37)水沸腾时为何响声比沸腾前小,沸腾时的气泡为何上面比下面大,沸腾前的气泡为何下面比上面大. 求新概念英语91-92的课文第二册 高一化学(必修2)的一道题目,麻烦写出具体的解题过程,谢谢!若要使0.5mol甲烷完全和氯气发生取代反应,并生成相同物质的量的4种取代产物,则需要氯气的物质的量为( )A.2.5molB.2molC.1.25mol 17.18 新概念英语第二册 91课作文急用 麻烦写出具体过程就是质量监测最后一题:某有机物在常温下为液体,常用作油漆的溶剂.为测定该有机化合物的化学式,将该有机物7.8g在氧气中完全燃烧,得到的二氧化碳在标准状况下体积为13 刚倒完热水的热水瓶,立即盖上盖子,冷却后却不易拔出塞子,请你说明其中的道理.答案上写的是水冷却后使瓶内气体减少,为什么气体会减少啊? 新概念英语第二册91课摘要写作答案要2篇。左右2篇都要 高一化学题(必修2) 请写出解题过程,谢谢!镭是元素周期表中第七周期的IIA族元素,下列说法错误的是( )A.氢氧化物呈两性B.碳酸盐难溶于水 问一道初二关于大气压的物理题(微难)“把空罐头瓶的瓶口朝下,并将其按入水中,可见始终不能使瓶内充满水.”这句话答案上说是错的,我问老师时她推理了一下然后说应该是瓶内一滴水都 写出60的全部因数,其中质数有?合数有? 1.某溶液可能含有Cl-、SO42-,为了检验它们,正确的操作是( )A.先加BaCl2溶液(若有沉淀滤去),在再加AgNO3溶液B.先加AgNO3溶液(若有沉淀滤去),在再加Ba(NO3)2溶液C.先加Ba(NO3)2溶液(若有沉淀滤 一物理大气压问题,初二的~在吸管中间剪一水平切口(吸管未剪断)从切口处折弯吸管,使两段大致成直角,把吸管一端放进水里,从另一端用力吹气,观察到的现象是( )1.切口处有水向上喷出 2.切 75的全部因数有( ),其中( )是质数,( )是合数. 下列关于气体摩尔体积的几种说法正确的是 ( )A.22.4 L任何气体的物质的量均为1 molB.非标准状况下,1 mol任何气体不可能占有22.4 L体积C.0.1 mol H2、0.2 mol O2、0.3 mol N2和0.4 mol CO2组成的混合 初二一道关于大气压的题目SARS病毒可通过空气传播.当我们吸气时,胸部扩张,胸内肺泡跟着扩张,于是肺的容积增大,肺内空气压强_____,_____使含SARS病毒的空气经鼻腔、气管进入肺中;呼气时,胸 在75的因数中,质数有…合数有… 化学工作者把烷烃、烯烃、环烷烃、炔烃……的通式转化成键数的通式,给研究有机物分子中键能大小的规律带来了很大方便.设键数为I,则烷烃中碳原子数跟键数的关系通式为:CnI3n+1,烯烃 一道物理题关于大气压2在研究水的沸点与气压关系的实验中:(1)用酒精灯对烧杯内的水加热,当大气压为1标准大气压时,加热到_______ ,水就开始沸腾.(2)熄灭酒精灯,水_________沸腾.(3)再将装有注 在75因数中,质数有( ),合数有( )  ABCDE是同周期的5种元素,AB的 最高价氧化物对应的 水化物呈碱性,且碱性B>A,;CD的气态氢化物的水溶液呈酸性,且酸性C>D;5种元素所形成的简单离子中,E的离子半径最小,则他们的 原子序数由 初二物理题(关于大气压)1.牛奶罐上只开一个小孔,就很难倒出牛奶,这是为什么?2.医生用注射器打针前,要把药液吸入注射器,简单描述医生如何把药液吸进注射器,并作出解释.3.若房顶面积为 75的全部因数有几个,分别是多少?其中什么是质数,什么是合数? 高一化学必修一42页到43页的复习题答案 1,为什么人能用吸管吸出饮料?2若某人同时将2根吸管含在嘴里,一端放在饮料里,一端放在杯外,他可以喝到饮料吗?为什么?不要非常详细,易懂,说明重点就行 因数,倍数,质数,合数的含义是什么? 在密闭容器中,将碳酸氢钠和过氧化钠的混合粉末加热到250℃,使其充分反应,最后测得残余固体由两种化合物组成,分别为a mol和b mol,且a>b.回答下列问题:(1)反应后容器中固体的成分及其物质 有关大气压的!急``````````````````````实验:在广口瓶中放入浸满酒精的棉花并把它点燃,用一个煮熟的鸡蛋剥去皮并用它堵住瓶口,问:看到什么现象?如何解释这种现象? 42的因数有哪些,其中质数有哪些,合数有哪些,奇数有哪些? 在常温常压下 取下列四种有机物各1mol 分别在足量的氧气中燃烧 消耗氧气最多的是A.C2H5OH B.CH4 C.C2H4O D.C3H8O2 我看有同学把这些有机物分成水和另一种有机物就能很快判断 原理 1.水沸腾时的温度时96摄氏度,表明水面的大气压大于一个标准大气压.2.没有大气压的地方,车子的车胎会更容易爆裂.3.氢气球在没有大气压的情况下将能够上升得更高. 42的因数有哪些?在这些数中( )是质数,( )是合数. 分析下每个选项 思路.·已知Na2SO4和NaCl的混合溶液中,Cl-的物质的量浓度是Na+的物质的量浓度的0.6倍,则下列叙述中正确的是(    ) A.SO42-离子和CL-离子的物质的量之和等于Na+的物质的量B. 初二科学题.关于大气压有一“苏泊尔”牌高压锅的直径为24cm,限压阀气孔的直径为35mm,限压阀质量为100克,是估算当正常使用时,锅内气压约为多大?要完整的苦厄写步骤 把 1、2、12、37和51填入下面( )里.奇数( ) 素数( ) 合数( ) 请详细分析每一个选项在一定条件下,一定量的A和B气体发生如下可逆反应:2A(g)+3B(g)=3C(g),只有反应平衡才具有的性质是( )A.各物质的浓度之比为2:3:3B.混合物各物质浓度的浓度相等C.A、B、C 初二科学关于大气压压强的题目一定要科学的! 1、2、24、37和51这些数可以填入哪个括号.( ) ( ) ( ) 奇数 素数 合数1、2、24、37和51这些数可以填入哪个括号。( ) ( ) ( ) 奇数 素数 合数 就是物质的量,和离子大量共存的问题的解题方法.最好有例题
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn