JavaScript基础整理(2)
接下来的重点是函数。我们知道函数是特殊的对象。
函数作用域和声明提前。JavaScript中没有块级作用域,只有函数作用域:变量在声明它们的函数体以及这个函数体嵌套的任意
函数体内都要定义。
function test(t){ // t在这个函数体内都有定义
var i=0;
if(t>0){
var j=0; // j 不仅仅在if语句中,在整个函数体内都有定义
for(var k=0;k<10;k++){ //k 不仅仅在for循环内,在整个函数体内都有定义
console.log(k); // 输出 0-9
} // end for
console.log(k); // 输出 10
} //end if
console.log(j) ; // 输出 0
}
JavaScript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的。
作为命名空间的函数:
在函数中声明的变量在整个函数体内都是可见的(包括在嵌套的函数中),在函数的外部是不可见的。不在任何函数内声明的
变量是全局变量,在整个JavaScript程序中都是可见的。这就带来一个问题,当你把不同的JavaScript代码引入到同一个程序中时,无法
确定引入的变量是否已经定义,这样代码就会发生冲突。解决的方法就是将代码放入一个函数内,然后调用这个函数。这样全局变量就
变成了函数内的局部变量。
function mymodule(){
// 模块代码
// 这个模块所使用的所有变量都是局部变量,而不是污染全局命名空间
}
mymodule(); //不要忘了还要调用这个函数
可以直接定义一个匿名函数,并在单个表达式中调用它:
( funtion(){ // mymodule()函数重写为匿名的函数表达式
//模块代码
}() ); //结束函数定义并立即调用它
这种定义匿名函数并立即在单个表达式中调用它的写法非常常见,已经成为一种惯用法了。
我们知道在JavaScript中一切皆对象,JavaScript全局变量是全局对象的一个属性。而局部变量是跟函数调用相关的
某个对象的属性。
如果嵌套函数作为方法调用,其this值指向调用它的对象。如果嵌套函数作为函数调用,其this值不是全局对象(非严格模式下),
就是undefined(严格模式下)。
类
在JavaScript中也可以定义对象的类,让每个对象都共享某些属性,这种共享的特性是非常有用的。(思考:有什么用?怎样用?)
在JavaScript中,类的实现是基于其原型继承机制的。类的所有实例对象都从同一个原型对象上继承属性。因此,原型对象是类的核心。
定义构造函数既是定义类,并且类名(构造函数名)首字母要大写。
JavaScript中类的一个重要特性是"动态可继承"。
定义类是模块开发和重用代码的有效方式之一。
JavaScript基础整理(2)的更多相关文章
- JavaScript基础整理(1)
最近读了<JavaScript权威指南>这本书,闲来无事对自认为重要的知识做了些整理,方便以后查阅. JavaScript中的最重要的类型就是对象,对象是名/值对的集合,或字符串到值映射的 ...
- JavaScript基础整理
在HTML页面中嵌入JavaScript代码的三种方式 1.内嵌 写在<head>标签或<body>标签中 <script> function displayTim ...
- javascript基础(整理自廖雪峰)
不要使用==比较,始终坚持使用===比较false == 0; //返回true. 这种情况, 它会自动转换数据类型再比较false === 0; //返回false. 建议用这种方式 NaN === ...
- javascript基础(整理自手册网)
变量 person=null; //清空变量 carname="Volvo"; //赋值给未声明的变量, 它将会变成全局变量, 即使在函数内部 window.carnam; //所 ...
- javascript 基础整理
js编码标准 参考 数据类型 注意事项
- JavaScript基础知识整理(2)
15.处理图像 注意:(1)在写js文件时,尽量将函数的声明往后写,将函数调用写在前面,这样能够使代码结构很清晰. (2)一个网页中翻转器一般超过3个,所以使用for循环减少重复使用翻转器代码的次数. ...
- javascript基础入门知识点整理
学习目标: - 掌握编程的基本思维 - 掌握编程的基本语法 typora-copy-images-to: media JavaScript基础 HTML和CSS 京东 课前娱乐 众人皆笑我疯癫,我笑尔 ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- Javascript基础回顾 之(三) 面向对象
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
随机推荐
- 实现socket非阻塞设置
刚开始学习,难免有些疏漏之处,请各位多多指教. 程序亲测可以使用.废话不多说. 网络IO模型分为阻塞IO.非阻塞IO.异步IO.IO复用.信号驱动IO. 阻塞IO: 有数据时,直接读:没有数据时,等待 ...
- BZOJ 1113: [Poi2008]海报PLA
1113: [Poi2008]海报PLA Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1025 Solved: 679[Submit][Statu ...
- 【codevs1907】 方格取数 3
http://codevs.cn/problem/1907/ (题目链接) 题意 N*N的方格,每个格子中有一个数,从中取出不相邻的任意个数,使得取到的数的和最大. Solution 裸的二分图带权最 ...
- 【bzoj2818】 Gcd
http://www.lydsy.com/JudgeOnline/problem.php?id=2818 (题目链接) 题意 求给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数 ...
- IAR使用记录
1. Project-->Options... 更改器件:General-->Target-->Device 添加其它需包含的目录:C/C++ Compiler-->Prepr ...
- STM32的12864液晶串行控制
发现12864只有主函数中不断刷新才有数据显示,,原因是写指令和写数据中没有加延时,加一个延时就好了.
- django admin中保存添加的数据提示need string or buffer, int found
原因 def __unicode__(self): return unicode(self.pk) 此处如果没有unicode就会报这个错误,原因就是编码错误 以为是文件开始没有加utf-8导致的,然 ...
- 高可用与负载均衡(6)之聊聊LVS的三种模式
LVS的赘述 IPVS,ipvs ,ip_vs是负载均衡器中的内核代码 LVS是完整的负载均衡器+后端服务器.这些组件组成了虚拟服务器. LVS是一个4层负载均衡方案,标准的客户端-服务器网络语义也被 ...
- Hibernate_增删改
package com.etc.test;import java.util.List;import org.hibernate.Session;import org.hibernate.Session ...
- SQL Server 2012 学习笔记2
1. 新建数据库 可以在对应目录下右键新建数据库,也可以用程序添加: 先打开程序编辑对话框"New Query" create database Library 2. 添加表格 可 ...