基本概念

<h2>区分大小写</h2>
<h2>标识符</h2>
<p>即变量、函数、属性的名字,或者函数的参数。</p>
规则
<ul><li>第一个字符必须是字母、下划线,或者美元符号</li><li>替他可以包含数字</li></ul>
<p>标识符中的字母可以包含扩展的ASCII或Unicode字母字符。</p>
<h2>注释</h2>
<p>// 单行注释</p>
<p>/*多行注释*/</p>
<h2>严格模式</h2>
ECMAScript 5 引入了严格模式的概念。在严格模式下,ECMAScript3中的一些不确定行为将得到处理,而且对于某些不安全的操作也会抛出错误,执行严格模式,可以在顶部添加代码
<code>"use strict"</code>
在函数上方使用这行代码可以让指定函数在严格模式下执行
<code>function doSomething() {
"use strict"
// to do ...
}
</code>
<h2>语句</h2>
<p>ECMAScript 中的语句以一个分号结尾,但分号可省略</p>
<h2>变量</h2>
<p>ECMAScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。定义变量用 var 操作符,后跟变量名(未经过出事话的变量会保存一个特殊值--undefined)</p>
<p>可以在修改变量值得时候修改变量的类型.</p>
如:
<code>var message = "hi";
var message = 100;</code>
<p>如果变量前不用 var 修饰,则默认变量是全局变量</p>
<h2>数据类型</h2>
<p>ECMAScript中有5种简单数据类型(也成为基本数据类型):undefined、Null、Bollean、Number和String。还有一种复杂数据类型-object,object是由一组无序的名值对组成(蛮像字典(OC))。ECMAScript不支持任何创建自定义类型的机制,而所有值最终都将是上述6中数据类型之一。</p>
<h3>typeof操作符</h3>
<p>用于检测给定变量的数据类型</p>
<h3>Undefined类型</h3>
<p>Undefinded类型只有一个值,即特殊的undefined。</p>
<h3>Null类型</h3>
<p>Null类型是第二个只有一个值</p>
<p>只要意在保存对象的变量还没有真正保存对象,就应该明确的让改变量保存null值</p>
<h2>Boolean类型</h2>
<p>该类型有两个字面值:true和false。这两个值与数字值不是一回事,因此true一定不等一1,而false也一定不等于0,区分大小写。</p>
<h2>Number类型</h2>
<p>这种类型用IEEE754格式来表现整数和浮点值。为支持各种数值类型,ECMA-262定义了不同数值字面量格式。</p>
进制
<ul><li>十进制:var intNum = 55;</li><li>八进制第一位必须是(零),然后是八进制数字序列(0-7),如果字面值超出了范围,那么前导零将被忽略,后面的数值将被当做十进制解析。八进制在严格模式下是无效的,会报错。</li><li>十六进制的前两位必须是0X,后面跟十六进制数字(0-9和A-F,字母不分大小写)</li><li>在进行算术计算时,所有八进制和十六进制的数值最终都将被转换成十进制数值。</li></ul>
<h3>浮点数值</h3>
<ul><li>保存浮点数空间是整数的两倍,所以如果浮点数本身是一个整数,那么该值也会被转换为整数</li><li>浮点数的最高精度是17位小数</li><li>在进行算术计算时候,浮点数的精度,远远小于整数。</li></ul>
<h3>数值范围</h3>
<ul><li>大多数浏览器范围是Number.MIN_VALUE(5e-324)至Number.MAX_VALUE(1.79769311348623157e+308)</li><li>超出范围会被转换成(-)Infinity</li></ul>
<h3>NaN</h3>
<p>NaN,即非数值(Not a Number)是一个特殊的数值,这个数值表示本来要返回操作数未返回操作数的情况(这样就不会出现错误了),任何数除以零会返回NaN</p>
<p>NaN本身有两个特点。首先,任何涉及NaN的操作都会返回NaN。其次,NaN与任何值都不相等,包括NaN本身。</p>
<p>isNaN()函数,返回值是boolean类型,帮助我们确定是不是“不是数值(NaN)”</p>
<h3>数值转换</h3>
<p>有3个函数可以把非数值转换为数值:Number(),parseInt()和parseFloat().第一个函数即转型函数Number()可以用于任何类型的数据,而另两个函数专门用于把字符串转换成数值。</p>
<h3>String 类型</h3>
<p>String类型用于表示由零或多个16位Unicode字符组成的字符序列。字符串可以由双引号或单引号表示。</p>
<ul><li>字符字面量:String数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其他用途的字符。</li><li>ECMAScript中的字符串是不可变得,也就是说,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。</li><li>转换为字符串:要把一个值转换为字符串有两种方法,一,toString()。但是null和undefined值没有这个方法,在不知道要转换的值是不是null或undefined的情况下,可以使用转型函数String()。</li></ul>
<h3>Object类型</h3>
ECMAScript中的对象其实就是一组数据和功能的集合。
<h2>操作符</h2>
<p>类似Java</p>
<p>相等和不等</p>
<p>操作符都会先转换操作数(通常称为“强制转型”),然后再比较他们的相等性。(null和undefined是相等的)</p>
<p>全等操作符(===),用于表示未经转换就相等的情况,如:</p>
<code>var result1 = ("55"==55); // true 因为转换后相等
var result2 = ("55"===55) // false 因为不同的数据类型不相等。</code>
<h2>语句</h2>
<h3>if语句</h3>
<p>if的condition(条件)可以是任意表达式;而且对这个表达式求值的结果不一定是布尔值。ECMAXcript会自动调用Boolean()转换函数将这个表达式的结果转换为一个布尔值。</p>
<h3>for - in 语句</h3>
<p>可以用来枚举对象的属性,语法:</p>
<code>for (property in expression) statement</code>
<h3>label语句</h3>
<p>使用label语句可以在代码中添加标签,以便将来使用,语法:</p>
<code>label:statement</code>
实例:
<code>start:for(var i = 0; i < count; i++) {
alert(i);
}</code>
<p>一般与for和break、continue一起使用,如:</p>
<code>outermost:
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if(i == 5 && j == 5) {
break outermost;
}
num++;
}
}
alert(num); //55</code>
<h3>with语句</h3>
<p>with语句的作用是将代码的作用域设置到一个特定的对象中。语法:</p>
<code>with (expression) statement;</code>
<p>定义with语句的目的主要是为了简化多次编写同一个对象的工作,如:</p>
<code>var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
转为with 代码
with(location) {
var qs = search.substring(1);
var hostname = hostname;
val url = href;
}</code>
<p>在严格模式下不允许使用with,否则将视为语法错误。</p>
<h3>swtich语句</h3>
<p>switch 语句可以使用任何数据类型。case的值可以是常量、变量,表达式。</p>
<h2>函数</h2>
<p>用function声明</p>
<p>函数在定义是不指定是否返回值,函数任何时候都可以通过return语句后跟要返回的值来实现返回值。</p>
<h3>理解参数</h3>
<p>ECMAScript函数的参数和大多数语言的函数参数有所不同。他不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数。在调用这个函数时也未必一定要传递两个参数。可以是一个、三个,甚至不传递参数。这样的原因是ECMAScript中的参数在内部是一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数。</p>
<h3>没有重载</h3>
<p>如果定义了两个名字相同的函数,则名字属于后定义的函数。</p>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容