JavaScript的两个特征:
- 不需要声明就可以使用变量
- 有隐含的全局概念,即不声明的任何变量都会成为全局对象(this)的属性
function sum(x, y) {
// 不推荐写法: 隐式全局变量
result = x + y;
return result;
}
alert("sum="+sum(3,3) + " result="+result);
// 结果:sum=6 result=6
// 说明:如果不调用sum函数,直接运行alert(result),结果就是 result 未定义, 因此、尽量使用var声明变量.
*使用任务链进行部分var声明
function sum() {
var a = b = 0;
// a 是局部变量、b是全局变量
}
此现象发生的原因在于这个从右到左的赋值,首先,是赋值表达式b = 0,此情况下b是未声明的。这个表达式的返回值是0,然后这个0就分配给了通过var定义的这个局部变量a。
隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力。
- 通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。
- 无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。
这表明,在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删 除的,而变量是不能的:
// 定义三个全局变量
var global_var = 1;
global_novar = 2; // 反面教材
(function () {
global_fromfunc = 3; // 反面教材
}());
// 试图删除
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true
// 测试该删除
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"
JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。当你使用了一个变量,然后不久在函数中又重新声明的话,就可能产生逻辑错误。对于JavaScript,只 要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。看下面这个例子:
range = "global"; // 全局变量
function show() {
alert(range ); // "undefined"
var range = "local";
alert(range ); // "local"
}
show();
在coding中,编码规范非常重要,可以让自己和团队其他成员更易阅读和理解。
- 缩进
- 空格
- 分号
- 变量定义(个人偏好 各单词用下划线分隔)
- 方法定义(公有和私有应区分)
- 常量定义(个人偏好 全部大写)
- 注释
努力编写高质量的javascript代码!
javascript允许使用一种简洁而可读的记法来创建数组和对象.
var customer = new Object();
customer.firstName="yongfei";
customer.lastName="yang";
等价于:
var customer={firstName:'yongfei',lastName:'yang'}
对象字面量(object literal):一个名值对列表,每个名值对之间用逗号分隔,并用一个大括号括起。各名值对表示对象的一个属性,名和值这两部分之间用一个冒号分隔。
数组字面量(array literal):这是一个用逗号分隔的值列表
函数字面量:前面是一个function关键字,后面是一个函数名(可选)和参数表。然后是函数体,包围在大括号中。
prototype使用技巧
- JavaScript为每一个类型(Type)都提供了一个prototype属性,将这个属性指向一个对象,这个对象就成为了这个类型的“原型”,这意味着由这个类型所创建的所有对象都具有这个原型的特性。另外,JavaScript的对象是动态的,原型也不例外,给prototype增加或者减少属性,将改变这个类型的原型,这种改变将直接作用到由这个原型创建的所有对象上.
- 如果给某个对象的类型的原型添加了某个名为a的属性,而这个对象本身又有一个名为a的同名属性,则在访问这个对象的属性a时,对象本身的属性“覆盖”了原型属性,但是原型属性并没有消失,当你用delete运算符将对象本身的属性a删除时,对象的原型属性就恢复了可见性。利用这个特性,可以为对象的属性设定默认值
- 将一个对象设置为一个类型的原型,相当于通过实例化这个类型,为对象建立只读副本,在任何时候对副本进行改变,都不会影响到原始对象,而对原始对象进行改变,则会影响到副本,除非被改变的属性已经被副本自己的同名属性覆盖。用delete操作将对象自己的同名属性删除,则可以恢复原型属性的可见性。
分享到:
相关推荐
javascript学习javascript学习javascript学习javascript学习
JavaScript学习指南 高清 PDF,个人的学习使用,共35M。
资源名称:Javascript完全学习手册内容简介:本书分4篇14章,介绍Javascript的知识,全书内容包括:Javascript语法基础、流程控制、函数、内置对象编程、文档对象模型DOM与事件驱动、处理XML、...
JavaScript基础深度原理学习心得,从中可以领略到JavaScript比较有深度的知识理解 JavaScript基础深度原理学习心得,从中可以领略到JavaScript比较有深度的知识理解
JavaScript学习指南.pdf JavaScript学习指南.pdf
JavaScript 帮助 学习 文档 对JavaScript学习很有帮助
Javascript学习总结, Javascript学习总结, Javascript学习总结, Javascript学习总结 Javascript学习总结
JavaScript学习资料大全,包括《JavaScript实例》、《JavaScript教程》、《Javascript语言教程》、《JavaScript技术讲座》、《Javascript源码大全1.0版》、《javascript教程.chm》、《JavaScript源代码集》、...
javascript学习
JavaScript学习指南第三版,学习JavaScript的同学欢迎来下载
JavaScript学习指南 源代码
Javascript学习是Android客户端目前最全面的免费离线Javascript学习书籍,从Html入门到Html样式设计,再到Javascript,提高网页设计能力。主要内容包括: 1、Html基本标签 2、Html表单知识 3、Web2.0(Div+Css样式)...
个人Javascript学习笔记 精华版 个人Javascript学习笔记 精华版 个人Javascript学习笔记 精华版
JavaScript学习资源JavaScript学习资源JavaScript学习资源
JavaScript学习工具.rarJavaScript学习工具.rarJavaScript学习工具.rarJavaScript学习工具.rarJavaScript学习工具.rarJavaScript学习工具.rar
《JavaScript学习指南(第2版)》系统地介绍了JavaScript的基本语法、基本对象、调试工具与排错技术、事件处理机制、浏览器对象模型/文档对象模型(BOM/DOM)等方面的知识,并通过一个复杂的示例深入探讨了Ajax应用。...
NULL 博文链接:https://jerryzhang.iteye.com/blog/376317
JavaScript学习笔记JavaScript学习笔记
JavaScript学习帮助文档,初学者