一. javascript构成

1.javascript实现由三部分组成:

ECMAScript:核心语言功能

DOM:文档对象模型,提供访问和操作网页内容的方法和接口

BOM:浏览器对象模型,提供与浏览器交互的方法和接口。

2. ECMAScript宿主环境:浏览器、Node、Adobe Flash.

二. 在HTML中引入javascript

1.<script>标签:language属性已经废弃,一般使用type="text/javascript";

2.不要再代码中出现</script>,如果需要的话用“<\/script>”;

<script type="text/javascript">
function test()
{
//alert("</script>");//×
alert("<\/script>");//√
}
test();

</script>js代码一般放在body中内容的最后,例如<body>...........<script>....</script></body>

3.<noscript>:当浏览器不支持脚本或者脚本被禁用时才会显示<noscript>标签中的内容。

例如:<noscript> 您的浏览器不支持javascript或者已被禁用。 </noscript>

三.基本数据类型

基本数据类型有:null,undefined,string,number,boolean。几点说明:

1. null值表示一个空指针引用,所以typeof null返回结果是object。如果定义一个变量是用来保存引用类型,那最好初始化为null。

2. toString() 转换为字符串:

toString():一般不带参数调用即可,但是null和undefined没有这个方法。

toString()指定基数,可以返回指定进制的字符串。例如:

var n=10;
n.toString(2);//"1010"
n.toString(4);//"22"

3.String()转换为字符串:可以将任意类型的值转换为字符串形式。转换规则如下:

如果变量有toString()方法,则调用toString()方法;

如果变量为null,则返回"null";

如果变量为undefined,则返回"undefined"。

var a=10,b,c=true,d=null,e=new Object();
console.log(String(a));//'10'
console.log(String(b));//'undefined'
console.log(String(c));//'true'
console.log(String(d));//'null'
console.log(String(e));//'[object Object]'

四.函数-function

1.函数参数

ECMAScript中的参数是用类似数组的对象来表示的,可以使用arguments对象来访问每一个参数。例如,arguments[0]表示第一个参数,arguments.length表示传进来的参数个数。不过arguments其实并不是Array的实例。

function add(a,b,c){
console.log(arguments instanceof Array); //false
console.log("args number:"+arguments.length);
if(arguments.length>=3){
return a+b+c;
}else if(arguments.length==2){
return a+b;
}else{
return a;
}
}
add(1);//
add(1,2)//
add(1,2,3);//
add(1,2,3,4,5);//

ECMAScript中的函数不能重载,但是通过这种方式也可以实现传递可变个数的参数来实现类似功能。

2. 没有传递值得命名参数会自动赋予undefined。

function add(a,b){
return b;
}
add(1);//undefined
add(1,2)//

3. arguments与命名参数

如果在函数体中修改arguments的值,那么对应的命名参数也跟着发生变化。

function add(a,b){
arguments[1]=10;
if(arguments.length>=2){
return a+b;
}else{
return a;
}
}
add(1);//
add(1,2)//

要注意arguments对象的长度是由调用时实际传入的参数个数决定的,而不是定义时的命名参数个数决定的。例如在上例的在add(1)调用时,只传入了一个参数,对arguments[1]的修改并不会生效。

4. 传递参数

函数的参数是按值传递的。当传递基本类型时,被传递的值被赋给一个局部变量,函数内部的修改不会影响函数外部的变量;当传递引用类型时,会把这个值在内存中的位置赋给局部变量,函数内部的修改会对函数外部有所影响。

//基本类型
function test(a){
a=100;
return a;
}
var m=1;
var result=test(m);
console.log(m);//
console.log(result);// //引用类型
function test(a){
a.name='tom';
return a;
}
var m=new Object();
m.name='peter';
var result=test(m);
console.log(m.name);//tom
console.log(result.name);//tom

读javascript高级程序设计01-基本概念、数据类型、函数的更多相关文章

  1. 读javascript高级程序设计00-目录

    javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/>本笔记是为了方便日后查阅,仅作学习交流 ...

  2. 读javascript高级程序设计-目录

    javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/>本笔记是为了方便日后查阅,仅作学习交流 ...

  3. 《JavaScript高级程序设计》 -- 基本概念(一)

    之前看过好几遍<JavaScript高级程序设计>这一书,但是始终没有完完整整的看过一遍.从现在开始我会把它完整的啃一遍,每章节都记录笔记,自己的心得,加油! 由于前三章的内容比较简单,因 ...

  4. 读javascript高级程序设计08-引用类型之Global、Math、String

    一.Global 所有在全局作用域定义的属性和方法,都属于Global对象. 1.URI编码: encodeURI():主要用于对整个URI编码.它不会对本身属于URI的特殊字符进行编码. encod ...

  5. 读javascript高级程序设计14-错误处理与调试

    一  错误类型 ECMA规定了常见的7种错误类型: Error: 基类型.其他常见的错误类型都继承自该类型,一般供开发人员抛出自定义错误. EvalError:该类型会在eval()函数使用异常时被抛 ...

  6. 【读书笔记】读《JavaScript高级程序设计-第2版》 - 函数部分

    1. 定义 函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 对于函数 ...

  7. 读javascript高级程序设计10-DOM

    一.节点关系 元素的childNodes属性来表示其所有子节点,它是一个NodeList对象,会随着DOM结构的变化动态变化. hasChildNodes():是否有子节点. var headline ...

  8. 读javascript高级程序设计13-JSON

    JSON是一个轻量级的数据格式,可以简化表示数据结构的工作量.在实际工作中,我们经常用它来传递数据,不过对于其使用的一些细节还是需要注意的.在ECMAScript5中定义了原生的JSON对象,可以用来 ...

  9. JavaScript 高级程序设计 02-变量、数据类型

    一.JavaScript变量 1.变量的定义 在定义变量时,统一使用关键字var,后跟变量名(即标识符,如果不知道什么是标识符,可以到这去查看),如下 var message; //定义一个变量 注意 ...

随机推荐

  1. 使用Go开发web服务器

    原文链接 Go(Golang.org)是在标准库中提供HTTP协议支持的系统语言,通过他可以快速简单的开发一个web服务器.同时,Go语言为开发者提供了很多便利.这本篇博客中我们将列出使用Go开发HT ...

  2. 10. 星际争霸之php设计模式--原型模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  3. RF《Quick Start Guide》操作总结

    这篇文章之所以会给整理出来,是因为学了一个季度的RF后,再去看官网的这个文档,感触破多,最大的感触还是觉得自己走了不少弯路,还有些是学习方法上的弯路.在未查看这类官网文档之前,更多的是看其他各种人的博 ...

  4. NET中的类型和装箱/拆箱原理

    谈到装箱拆箱,DebugLZQ相信给位园子里的博友一定可以娓娓道来,大概的意思就是值类型和引用类型的相互转换呗---值类型到引用类型叫装箱,反之则叫拆箱.这当然没有问题,可是你只知道这么多,那么Deb ...

  5. Centos6.7安装docker1.7.1

    Docker当前发布的最新版本已经到了1.11,其官网上针对Centos的的安装需求如下: Docker requires a -bit installation regardless of your ...

  6. orcale删除重复数据

    1.删除orcale重复数据, delete from da_door awhere (a.dt,a.key1) in (select dt,key1 from da_door group by dt ...

  7. springmvc web-info目录下无法引入的js文件无效

    今天在联系spring的时候而然遇到了个不起眼的问题.那就是在html或者说jsp页面中引用js文件的时候总是提示找不到路径.eclipse更是抛出 No mapping to aa.js. 我就奇怪 ...

  8. HTML5正确的嵌入flash

    <object type="application/x-shockwave-flash" data="your-flash-file.swf" width ...

  9. 深入理解为什么Java中方法内定义的内部类可以访问方法中的局部变量

    好文转载:http://blog.csdn.net/zhangjg_blog/article/details/19996629 开篇 在我的上一篇博客 深入理解Java中为什么内部类可以访问外部类的成 ...

  10. EasyUI datebox 只读和取值

    <input id="dd" type="text" class="easyui-datebox" required="re ...