严格模式

ECMAScript 5 引入了严格模式, 要在整个脚本中启用严格模式, 可在顶部添加如下代码:

"use strict";

在函数内部执行这条语句, 则表示这个函数要在严格模式下运行:

function doSomething() {

"use strict";

// 函数体

}

支持严格模式的浏览器版本 IE10+, Firefox 4+, Safari 5.1+, Opera 12+, Chrome

最好在每条语句后边都加 ;号

变量在定义时, 最好直接给与初始化.

function test() {

var message = "hi"  // 这是一个局部变量

}

function test() {

message = "hi"  // 这是一个全局变量, 即省略 var 就可以定义全局变量, 不推荐这样做.

}

1.For … In 循环

For … In 声明用语遍历叔祖或者对象的属性 .

For...In

 1 <html>
 2 <body>
 3
 4 <script type="text/javascript">
 5 var x
 6 var mycars = new Array()
 7 mycars[0] = "Saab"
 8 mycars[1] = "Volvo"
 9 mycars[2] = "BMW"
10
11 for (x in mycars)         // 此处, x 作为下标,mycars是数组名字
12 {
13 document.write(mycars[x] + "<br />")
14 }
15 </script>
16
17 </body>
18 </html>

2. 拆分行

document.write( “Hello \

World !”) ;

3. 数据类型

简单类型

Undefined  // 这个值未定义

Null   -> 是一种对象 typeof( null )  “object”

Boolean

Number

String

复杂类型

Object

typeof(message) , typeof(95) 等等,因为JavaScript是松散类型。(var f = 10 ; f = “nihao”; )

typeof 操作符

"underfined" // 未定义

"boolean"  // 波尔类型

"String"  // 这是一个字符串

"number" // 这是一个数值

"object"  // 这是一个对象或 null

"function" // 这是一个函数

细说
undefined :  ( 只有一个值 )
  • 声明变量时,未初始化,则是 undefined类型 ( 所以声名变量时一定要初始化 )
  • undefined与未定义变量的区别 : 例如 var message ; alert(message) ; // undefined , alert( age ) //产生错误,因为 age未定义,对于未声明过的变量只能执行 typepf 检测其数据类型,并且未定义的变量也是 undefined类型 ( 与定义了但是未初始化一样 ) ,所以当定义变量时一定要初始化,以区别 是定义了变量未初始化还是压根就没有定义此变量。
Null : ( 只有一个值 )
  • typeof( null )   // 返回 Object , 可见 null 是对象Object 类型
  • 定义对象引用时,如果发现没有指定的话,则要指定 null

例如 var car = null;

alert(typeof car);  // "object"

Boolean 类型 : ( true , false )
  • var found = true ;    var found = false ;         // true , false 区分大小写 .
Number 类型
  • 十进制整数   var number = 55 ;
  • 八进制整数   var number = 070 ;
  • 十六进制整数 var hexNum = 0x1f ;
  • 浮点数 var floatNum = 1.1 ;   var floatNum = 10.0 ;    // 虽然是整数,但是解析成小数, 浮点数相加可能出错 0.1 + 0.2 不一定等于 0.3 ,所以不要轻易判断两个浮点数相加
  • e表示  var floatNum = 3.125e7 ;    // 等于 31250000   var floatNum = 3e-17 ;    // 等于 0.000000000000003
NaN ( 特殊类型 , 即 非数值 )
  • 任何数 除以 0 都会返回 NaN .   NaN类型属于特殊类型,不能用来判断,例如 NaN == NaN,isNaN( ) 函数判断 NaN类型
数值转换函数 ( Number( ) , parseInt( ) , parseFloat( ) , 第一个可以转换任何类型,后两个只能转换字符串 )
  • Number : Boolean类型 true 是 1,false 是 0,null 返回 0 , undefined 返回 NaN , 字符串 只有数字例如 “123”则会转换成123,如果是十六进制数  例如  “0xf”则会转变成十进制整数 , 空字符串 转换 0 , 如果字符串包括其他字符则转换成 NaN。( 不常用 )
  • parseInt : 找到第一个非空格字符,如果第一个字符不是数字或负号,返回 NaN,直到碰到第一个不是数字的符号,包括小数点。例如”1234blue”parseInt解析后是 1234,”22.5”解析后是22。(parseInt,这个函数肯定要只返回 Int类型,看名字都看的出 ),各种进制都解析的出。parseInt( “0xAF”, 16 ) 如果你知道是16进制数,还可以象这样提前规定。建议使用这种,清晰明了,例如 parseInt( “10”,2 )  返回 2 , parseInt( “10”, 10 ) 返回 10 ,所以还是指定比较好。
  • parseFloat : 类似 parseInt, 第一个小数点有效,向后的字母或者小数点等都类似 paseInt 无效。
String 类型

单引号, 或双引号定义的字符串, 例如:

var firstName = "niky";

var lastName = 'Kaka';

  • 特殊字面量 : \n 换行,\t 制表,\b 空格,\r 回车,\f 进纸,\\ 斜杠,\' 单引号( ‘He said, \’hey.\’’),\”双引号,\xnn 以16进制表示,\unnn 以16进制的另一种形式显示。
  • length 表示长度,例如:text.length
  • 转换为字符串 有两种形式 1) toString 方法 var age = 11 ; var ageString = age.toString(10) ;  --> 这个10表示10进制数  undefined 和 null没有 toString() 方法   2) String方法,所有值都可以调用,如果该值有 toString方法则调用之,如果是null返回 “null”,如果是undefined返回”undefined”

var num = 10;

alert(num.toString());  // "10" 默认的就是按照10进制数进行转换.

alert(num.toString(2)); // "1010" 这个2 表示是按照2进制数转换, 10的2进制表示就是 "1010"

Object 类型 *
  • JavaScript 的对象其实就是一组数据和功能的集合。var o = new Object() ; 仅仅创建 Object 的实例并没有什么用处,但是 Object类型是所有它的实例的基础 ( class ) , 换句话说 Object 类型所具有的任何属性和方法也同样存在与更具体的对象中。Object 每个实例都具有下列属性和方法:

    • constructor - 保存着用于创建当前对象的函数,构造函数,例如 Object ( ) ;  --> var o = new Object( ) ;
    • hasOwnProperty ( propertyName ) - 用于检查给定的属性在当前对象实例中( 而不是在实例的原型中 ) 是否存在。例如 o.hasOwnProperty( “name” ) ;
    • isPrototypeOf( object ) - 用于检查传入的对象是否是另一个对象的原型
    • propertyIsEnumerable( propertyName ) - 用于检查给定的属性是否能够使用 for-in 语句
    • toString( ) - 返回对象的字符串表示
    • valueOf( ) - 返回对象的字符串,数值,或布尔值表示,通常与 toString( )方法返回相同值 .

操作符 : == , != , === , !== ( “55” == 55  返回 true , “55” === 55 返回 false , 前边只判断数值是否相等,后边是数值类型一起判断 )

位操作符:

~ 按位非:

var num1 = 25;   // 二进制       00000000000000000000000000011001  ( 共32位 )

var num2 = ~num1;  // 二进制 11111111111111111111111111100110  ( 共32位 )

& 按位与

var result = 25 & 3;

| 按位或

var result = 25 | 3;

^ 按位异或

var result = 25 ^ 3;

<< 左移

var oldValue = 2;                   // 等于2进制 10

var newValue = oldValue << 5;   // 等于2进制 1000000 , 十进制的 64

左移一次 等于乘以2, 左移5次, 等于乘以5次2, 所以最后结果是 64

>> 右移

var oldValue = 64;                      // 1000000, 64

var newValue = oldValue >> 5;   //  10, 十进制的 2

>>> 无符号右移

布尔操作符:

! 逻辑非

&& 逻辑与

|| 逻辑或

条件操作符:

varibale = boolean_expression ? true_value : faluse_value;

var max = (num1 > num2) ? num1 : num2;

逗号操作符:

var num1 = 1,

num2 = 2,

num3 = 3;

switch - case 语句:

switch(i) {

case 25:

alert("25");

break;

case 26:

alert("26");

break;

default:

alert("other");

break;

}

switch 同样支持类似 C 一样的合并功能, 即 case 后不加 break, 那么两个 case 就会结合在一起.

switch (“hello world”) {

case "hello" + " world":

case 26:

alert("number");

break;

default:

alert("others");

break;

}

以上可以看出, switch 支持各种类型, 变量也好, 常量也好, 很灵活.

switch (true) {

case num < 0:

alert("this one is true");

break;

case num >= 0 && num <= 10:

alert("this is true");

break;

default:

alert("others");

break;

}

4. 函数

不同之处在与参数传递, 解析器不会判断你传递的参数是否正确,数量或数据类型都无所谓, 因为在函数内部有个arguments数组用来接收参数,并且可以在函数内部直接使用,例如直接使用arguments.length, 可以判断究竟传过来的实际参数是哪些.例如 ( 因为JavaScript中的数组可以存放不同类型的多个数据 ) 也就是说,即便你定义的函数只接收两个参数,在调用这个函数时也未必一定要传递两个参数。可以传递一个,三个甚至不传递参数。

可以通过判断argument 来执行不同代码

argument

1 function doAdd (num1, num2) {
2   if (arguments.length ==1 ) {
3     alert( num1 + 10 );
4   } else if (arguments.length ==2 ) {
5     alert( arguments[0] + num2 );
6   }
7 }

doAdd( 10 );  // 20

doAdd(30, 20);  // 50

最后:没有传递值的命名参数将自动被赋予 undefined值,这就跟定义了变量但是没初始化一样。

没有重载,一个函数名就是一个函数。如果定义了2个,则下边的会将上边的函数覆盖。上边的函数将不再能够使用。可以模仿重载-->通过不同参数。但本质上是一个函数。

5. 变量声明及命名规则

定义变量时要进行初始化   --> 这样做的好处就是当发现某个变量是 underfined, 则表明此变量是真的未定义而不是未初始化

转载于:https://www.cnblogs.com/moveofgod/archive/2012/09/18/2690506.html

JavaScript基础 ( 3 章 )相关推荐

  1. JavaScript基础——第二章,JavaScript操作BOM对象

    一,BOM模型(Borwser Object Model) BOM提供了独立内容的,可以与浏览器窗口进行互动的对象结构 BOM可实现功能: 弹出新的浏览器窗口 移动,关闭浏览器窗口以及调整窗口的大小 ...

  2. JavaScript基础——第一章,基础

    一,Javascript的基本结构 <script type="text/javascript"><!-JavaScript语句;-> </scrip ...

  3. 第五模块·WEB开发基础-第2章JavaScript基础

    第1章 JavaScript基础 01-JavaScript历史介绍 02-JavaScript的组成 03-JavaScript的引入方式 04-变量的使用 05-基本数据类型(一) 06-基本数据 ...

  4. javascript百炼成仙 第一章 掌握JavaScript基础1.6 叶老

    这一日,叶小凡来到青山院附近的小山上修炼,忽然,被一块石头绊了一跤.正在他自认倒霉打算爬起来的时候,在石头缝里边发现了一枚古怪的戒指.戒指通体呈现一种枯黄色,似有一些年代悠久之感. "摔了一 ...

  5. javascript百炼成仙 第一章 掌握JavaScript基础01 初入宗门

    前些天发现了一个巨牛的人工智能学习博客,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转 乐阳村,处于脚本大陆东部的边缘地带,民风淳朴,村民日出而作,日落而息.这一日清晨,所有村民来到村庄的门口,正 ...

  6. javascript百炼成仙 第一章 掌握JavaScript基础1.8 对象的取值

    "小娃娃,我现在问你,如果我事先不知道对象的某个属性叫什么,那又该怎么访问对象中对应这个属性的值呢?"叶老笑呵呵地问到. "什么什么,事先都不知道对象的属性名称,那怎么可 ...

  7. javascript百炼成仙 第一章 掌握JavaScript基础1.4数据类型

    修行还在继续,随着对要诀的深入,叶小凡明白,在编程世界,刚才的直接量都属于一种数据.和人有男女一样,数据也是有类型的. 在JavaScript中,数据可分为两类,分别为原生数据类型(primitive ...

  8. javascript百炼成仙 第一章 掌握JavaScript基础1.7 对象数据类型

    听到这句话,叶小凡一顿,动作停止了下来. 对象数据类型,这在JavaScript基础修炼要诀中只是提了一下,但是并没有细讲,这个对象数据类型一直以来都深深地勾起了叶小凡的好奇心. "小娃娃, ...

  9. javascript百炼成仙 第一章 掌握JavaScript基础1.5基础考核

    叶小凡兴奋,那种钻研了很久之后猛地豁然开朗,感觉实在是太爽了.乘着心情大好,叶小凡继续钻研"JavaScript基础修炼要诀",一晃半天时间过去了.叶小凡性格谨慎,也非常刻苦,有很 ...

最新文章

  1. PHP mysql 写入多条记录_PHP mysql插入多条记录的Array数组获取问题
  2. spark 随机森林算法案例实战
  3. 多个DataSet数据合并
  4. python excel 添加数据_使用pyexcel python在电子表格中添加行数据
  5. .Net学习(二):vb.net总结之似曾相识
  6. 谷歌修复多个严重的安卓 RCE 漏洞
  7. 2010-11-25
  8. python dataframe取行列_pandas DataFrame 行列索引及值的获取的方法
  9. 根据IP获取国家代码
  10. C4D-学习笔记-3-建模+渲染
  11. 49.QComboBox
  12. 免费的短信验证码接口
  13. (原創) 如何使用ThinkPad的TrackPoint(小紅點)? (NB) (ThinkPad)
  14. 解决kali虚拟机无法连接网络的问题
  15. Front Immunol 复现 | 1. GEO数据下载及sva批次校正(PCA可视化)
  16. 怎么设置系统消息免打扰,看这里就够了,WIN10系统如何设置系统消息免打扰
  17. 【百度AI开放平台】植物识别
  18. 微信公众号接入H5支付
  19. C语言与C++常见问答题
  20. [0892]《兽医内科学》主观题

热门文章

  1. 吴恩达最新采访!以数据为中心的原因
  2. Android C++ LOGE 无法输出问题
  3. 阿里云飞天会员体系企业用户及个人用户准入门槛说明
  4. 2018年10月7日英语学习
  5. android5.1手机root,最新的安卓5.1.1 ROOT教程(不需要刷第三方内核)
  6. Android常见的三种弹框
  7. linux wget 无法解析主机地址
  8. 用golang实现一个自动保存windows10锁屏壁纸的小软件
  9. 手动设置proxy网络:克拉洗:C克lash+威兔瑞
  10. 项目管理学习 ---- 认识项目管理及发展趋势