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

【探秘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,进行前端技术交流。  

TIOBE 2015年1月编程语言排行榜:JavaScript成大赢家 为什么iOS开发不需要Storyboard? 仅有纽扣大小的开发板 Intel Curie “撒娇”的豌豆荚?被百度手机助手屏蔽太糟心! 【工具推荐】Pgcli—自动完成和语法高亮的Postgres命令行工具 CES 2015:挑一款机器人带回家? 夜行、睡眠与健康:CES 2015十款酷炫的可穿戴产品 Java 9中新的货币API 唯“简”不破,Apple Watch App的设计之道 Google Glass从X labs“毕业”,更换项目负责人 不进化,则消亡——互联网时代企业管理的十项实践 RedMonk 2015年1月编程语言排行榜:进击的Swift! 微信开放JS SDK,这场web巨变意味着什么? 盘点一些iOS开发技巧:Swift和Objective-C 2014年,那些“颜值”爆表的UI动画 《近匠》爱加密:谁说iOS应用不需要保护? SwiftColorArt:开源易用的Swift图片类库 人气爆棚 干货满满 中国电信天翼开放平台开放日圆满落幕 必须Mark!43个优秀的Swift开源项目推荐 治拖延、疗懒癌!安利12款提高工作效率工具 把ES6带进Node社区 Io.js 1.0.0正式发布 Java 2014:10个最热门、最具争议性的话题 回顾:2014年最流行前端开发框架对比评测 实例讲解SQL注入攻击 调试大规模服务器集群的五大策略 .NET编译平台Rosly将迁移到Github Wasai虚拟现实头盔与体验馆发布:虚拟现实的线下经济 订票系统不再瘫痪 阿里云确认与12306合作 Apple前工程师Warren Moore:Swift中Metal使用初体验 手把手教学:详解Swift中的iOS设计模式 见微知著,那些触动人心的应用细节设计(一) 请问:我有一个表,因为字段的较多,且每个字段长度较大,所以生成报表时每两页A4纸才能容下一条记录,这在QuickReport中如何处理。谢谢。 如何判断我的窗体已经打开? 我怎样汇总两个字段都一样的数目呢?急!◎ 打印的问题! NT启动问题 有没有宁波的兄弟啊,有哪儿要PB或delphi的好点的公司。请介绍下。 关于远程登陆的问题??回答者一定重分相谢。 同志们,朋友们,有空来这里玩玩! 为什么用gethostbyaddr(ip,size,PF_INET)不能把机器名得到????? 如何将Delphi程序改为汇编? 非常着急,各位高手一起来帮我研究一下这个工作流系统怎么用? 简单问题,肯定给分! 据说高程的通过标准是上下午加起来算了? 请斑竹帮忙 请问各位前辈: 在执行中出现"incorrect syntax near 'JCSZ'"的错误提示,如何解决? 下标越界是什么意思啊? 一个基础性的问题,同样一份C/C++源代码可以在UNIX 和WINDOWS运行需要具有的条件是啥??? 在一台计算机上安装两个键盘同时接受输入的问题 对XML文档中的数据能不能进行SELECE操作???? 如何用JAVA实现263邮件那样的邮件粘贴功能 请教各位大哥,小弟最近遇到麻烦,为什么我的程序安装时,出现expsrv.dll无法注册的提示?expsrv.dll有什么作用?怎样闭掉? 如何在两个结构相同的库之间倒数?? 请问如何简单确定右键点击的是哪个控件? 有哪位高手可以给出windows98登录时网络服务的身份验证模块的程序或相关资料的呢?非常感谢啦 在CTreeCtrl中同时使用系统图标与自定义图标的问题?? SHGetFileInfo()为什么在Win2000下工作不正常? 请问高手:DataGrid的问题 jsp和servlet是怎样交互的? 请问 有什么方法能实现 在几个数中随机取出几个数 谢谢 请问:在执行文件DPR中有一段代码出现错误,请各问指点! 两个问题:1 关于.NET中 一个新控件propertyGrid1的使用问题;2 我想生成一个由lable和TextBox合成的控件(label在左,TextBox靠其右),怎么办? 分栏打印 依旧是undefined function mysqsl_connect()问题 急:如何在生成的exe中添加新的属性页,显示更多文件信息? V-DVD ROM!? MSDN上的例子需要uafxcwd.lib,怎么找不到呢? 请问窗口的other事件是如何触发执行的 JSP如何学习 vc在什么时候会引起小喇叭的叫声 请教高手,如果在VB里实现内存共享? 用什么方法可以转换图片类型?譬如将BMP格式的转换为JPEG格式的,请各位大哥给点提示!!! 关于vb script数组和函数功能的二个问题!高难度! 关天打印问题? 只能最小化到屏幕的左下角 *急:无为,acptvb,请帮忙看看http://www.csdn.net/Expert/topic/426/426766.shtm (有关XMLHTTP) 在php中要取出一段字符串的前n个字节,而又要判断最后一个是中文还是英文,如果是中文则将最后半个字符省略应该怎么做? 有在BCB5中用过sapi5朗读中文的朋友,高分送上! 最初级的问题,关于编译程序的。 重庆市信息产业办公室荣获全国最差信息产业办公室称号 大家用PB创建Jaguar应用程序时,一般创建一个大包还是多个包阿? 奇怪的问题,来者有分!没回答问题的先到先得! 在数位顺序表中,任何两个计数单位之间的进率都是10.()(为什么,说明理由) 牛顿第二定律的探究实验:为什么小车的质量要远大于勾码的质量?能给我个受力分析图吗?(用作图工具自己画,并附带些解释) 一根轻绳上端悬挂在天花板上下端挂一灯泡,则()A灯泡受到重力对绳拉力是一对平衡力B灯泡受重力和绳对灯泡拉力作用力和反作用力C灯泡对绳拉力绳对灯泡拉力是作用力反作用力D绳对天花 计数单位的进率都是十吗? 验证牛顿第二定律的实验中,为什么托盘和重物的质量要远比小车质量小很多? 电灯的重力为20N,绳AO与天花板间的夹角为45°,绳BO水平,求绳AO,BO所受拉力的大小 求解一道物理摩擦力的题,我觉得答案错了,所以问如图,两个水平力F作用在B C上.三个物体都处于静止状态,请问AC间摩擦力多少 BC减多少 C与地面的摩擦力多少?我主要不知道C与地面间摩擦力大 验证牛顿第二定律的实验中使砝码盘和盘内砝码的总质量远小于小车和车上砝码的总质量.为什么?还有…,一般来说,砝码盘和盘内砝码的总质量不超过小车和车上砝码总质量的10%。这个值 一个数最高位是百万位,他是()位数;一个九位数,它的最高位是()位 摩擦力包括重力吗?为什么二力平衡为拉力与桌面对物体的摩擦力有关!不爱答的不要答如图所示,用弹簧测力计水平拉动水平桌面上的物体,使其匀速直线滑动.以下叙述中的二个力属于一对平 验证牛顿第二定律试验中,为何有时要让砝码质量m远远小于小车质量M?,有时又不需要? 一个五位数,它的最高位是什么位?一个九位数,一个十二位数呢? 摩擦力实验中的压力是否只是指物体对桌面的压力? (二力平衡)手掌托一小石块,将它竖直向上抛出,设想如果手托石块加速向上运动过程钟,石块所受到的所有的力突然消失,那么小石块(立即做匀速直线运动并持续下去)我的问题:这里说的 就是两物体重叠在一起放在水平桌面上,对下面的物体施加水平向又的5N力,物体保持静止,为什么两物体间没有静摩擦?为什么下面对上面没有摩擦… 二力平衡的物体受摩擦力吗?我怎么都觉得只有静止在水平面上的物体才不受摩擦力,但今天上课老师说“二力平衡的物体不受摩擦力”,不能理解啊.谁的见解对?应该怎么理解? A同学用400N竖直向上的力去提质量为50KG,静止放在水平地面上的物体,物体所受的000合力为______.接着A同学改用100N水平向右的力去拉这物体,物体以0.5M/S的速度在水平地面上做匀速直线运动,此时 一道有关摩擦力的高中物理题如图所示,一物体分别沿AB、BO轨道由静止从斜面顶端滑到底端,物体与轨道间的动摩擦因数相同,物体克服摩擦分别为W1和W2则( ).A.W1>W2 B.W1=W2 C.W1 九年级物理关于《牛顿第一定律》、《二力平衡》的题1、牛顿第一定律(1)为什么行驶的汽车遇到意外情况时不能立即停车?注:我知道是因为汽车具有惯性,但是老师说这样回答不够严谨完 找出百宝箱的的密码答案:1,密码是七位数 2,这个数在200000与3000000之间,并且十位上是0,千位上是5个位上是最大的一个数,万位上的数和百位上的数相同,3,密码的十万位.万位.百位上的数字组成 如果拉物体,物体没有动,摩擦力是物体的拉力吗?物体动了,无论拉力多少,摩擦力是最大静摩擦吗?为什么最大静摩擦略大于滑动摩擦?为什么静摩擦力大小与压力无关,但与最大静摩擦力成正比? 二力平衡 物体在平衡力的作用下是处于静止状态还是匀速直线运动状态,取决于A、原来的位置B、原来是静止还是运动C、原来的受力情况D、与前面三项都有关能再具体一些吗 一个九位数,最高位上的数字是最大的一位数,十万位和百万位上的数字都是1,万位上的数字是5,上的数字都是0,这个数写作( ),省略“万”后面的尾数记作约( )万. 一道关于摩擦力的高中物理题题目大概就是人两手之间放置若干本书,双手压力不变,求最多能放几本,我一直弄不清书本与书本间的摩擦力的作用力与反作用力,应该是中间的书先掉还是两边的 科研人员乘气球进行科学考察,气球、座舱、压舱物和科研人员的总质量为990 kg.气球在空中停留一段时间后,发现气球漏气而下降,及时堵住.堵住时气球下降速度为1 m/s,且做匀加速运动,4 s内下 一个9位数,最高位和十万位上的数是6,其余各位都是5,这个数写作什么,省略到万后面的尾数约是 从个位起,第五位是万位,第八位是千位,它们的计数单位分别是? 验证牛顿第二定律实验中,怎么样钩码的重力才近似等于拉力?用公式推倒下, 最高位是千万位的数是一个八位数,其中最大的九位数是几?最小的九位数是几? 在数位顺序里,小数点左边第一位是【 】位,计数单位是【 】,第五位是【 】位,计数单位是【 】. 九年级物理力学问题在不计摩擦和机械自身重力时,既可能省力又可能费力的机械是______.A.杠杆 B.动滑轮 C.定滑轮 D.滑轮组 一个数的最高位是亿位,这个数肯定是九位数.是对是错? 在数位顺序表里,小数点左边第一位是()位,计数单位是(),第五位是()位,计数单位是().小数部分的最高位是()位,计数单位是() 验证牛顿第二定律 沙桶和沙的质量很小时才认为他们的重力等于拉力?为什么? 一个数的最高位是亿位,这个数一定是一个九位数.对还是错 在数位顺序表中,从个位起,第五位是()位,计数单位是();第八位是()位,计数单位是(). 1.一个长方体木块立在桌面上,用手指沿水平方向推他的下部,木块滑动;用手指推开他的上部,木块翻倒.这说明什么?2.短跑运动员起跑时用力向后蹬地,人就冲了出去,这里包含的物理知识是: 用定滑轮将重力为500牛的物体以1米/秒的速度匀速提升,不记摩擦.求(1)绳子的拉力;(2)10秒拉力做的功. 在光滑或粗糙斜面上拉力与物体重力的关系?注意摩擦力 求老师前辈们帮我解释为什么B是正确的.我知道其余三个都是错的,但不知道为什么B是对的. 当一物体在桌面上静止时,它受到的静摩擦力的大小,方向,作用点个是什么?!物理好的朋友帮忙答一下.有用的再多给!例如:一本新华字典在水平粗糙的桌面静止.那么它受到的静摩擦力的方向, 斜面机械拉力为什么克服物体的重力做功斜面拉力是等于物体重力加摩擦力吗?如果是,那么按网友回答“物体被视为一边向上运动,一边横着运动”向上的力与重力是平衡力,那么横着的力不应 如图所示,有一物体A置于托盘天平的托盘上,这时托盘秤的示数为3kg,弹簧测力计的示数为14.7N,此时正好达到一个稳定状态,请问:物体A的质量多大?(请写明步骤)(图上有一个托盘秤,秤上放 一个十位数,它最高位是(),从右边数第七位是(),计算单位是() 关于重力、弹力、摩擦力下面说法正确的是A.重力与物体的质量和所在的地理位置有关 B.摩擦力可能与物体相对于地面的运动方向相同 C.有弹力就一定有摩擦力 D.在粗糙程度一定的情况下,接 万位、十万位、百万位、千万位是万级上的四个计数单位.对还是错?请说明理由 一个九位数,他的最高位是( ),计算单位是( ) 下列关于重力、弹力和摩擦力的说法正确的是?A静摩擦力的大小在零和最大静摩擦力之间 B劲度系数越大的弹簧,产生的弹力越大 C动摩擦因数与物体之间的压力成反比,与滑动摩擦力成正比 D物 万级的计数单位有万位,十万位,百万位,千万位 高中物理向心力什么时候是重力减弹力什么时候弹力减重力RT,我高一 关于弹力和摩擦力,下列说法正确的是:A、有弹力一定有摩擦力B、有摩擦力一定有弹力C、摩擦力的大小和弹力大小成正比D、弹力的方向一定和摩擦力方向垂直具体分析一下,最好有反例 “十万”相邻的两个计数单位是“百万位”和“万位”这句话对吗 “弹力大小与物件受到的重力成正比”这句话对不?为什么? 请举出增大有益摩擦力的两个方法和+减少有害摩擦力的方法 万位,十万位,百万位,千万位都是计数单位吗? 挂在天花板上的电灯所受的重力跟和绳对灯的拉力是不是相互作用力?为什么? 增大摩擦力和减小摩擦力的办法? 与十万位相邻的两个计数单位分别是百万位和万位对吗 竖直悬挂在天花板上的电灯,除了受到重力外还受到一个绳子的弹力,问这个弹力是否就是绳子的拉力? 请举出增大有益摩擦力的两个实例和方法和 减少有害摩擦力的两个实例和方法
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn