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的一些基本原理普遍存在这里或者 ...
随机推荐
- js日历表
$scope.getCurrentWeek = function (day) { var days = ["星期日", "星期一", "星期二&quo ...
- Linux 简介
转载:http://c.biancheng.net/cpp/html/2726.html Linux简介 严格的来讲,Linux 不算是一个操作系统,只是一个 Linux 系统中的内核,即计算机软件与 ...
- [日常训练]常州集训day2
T1 Description 给定$N$个点,问这$N$个点能构成的三角形个数. Input 第一行一个整数$N$,代表点数. 接下来$N$行,每行两个非负整数$X,Y$,表示一个点的坐标. Outp ...
- js-JavaScript高级程序设计学习笔记11
依然第十四章 1.选择部分文本:使用setSelectionRange()方法,两个参数为第一个字符的索引和最后一个字符之后的索引,类似于substring()方法. 2.IE8及更早版本使用范围选择 ...
- Leetcode House Robber II
本题和House Robber差不多,分成两种情况来解决.第一家是不是偷了,如果偷了,那么最后一家肯定不能偷. class Solution(object): def rob(self, nums): ...
- ubuntu下编译caffe
Ubuntu下编译caffe 纯粹是个人编译的记录.不用CUDA(笔记本是amd卡,万恶的nvidia):不手动编译依赖包(apt-get是用来干啥的?用来直接装二进制包,以及自动解决依赖项的) ca ...
- 【poj1041】 John's trip
http://poj.org/problem?id=1041 (题目链接) 题意 给出一张无向图,求字典序最小欧拉回路. Solution 这鬼畜的输入是什么心态啊mdzz,这里用vector储存边, ...
- Linq集合
摘要:微软在.NET 3.5中推出了LINQ,现在各种LINQ Provider满天飞,TerryLee在老外站点上收集了一份LINQ Provider列表 微软在.NET 3.5中推出了LINQ,现 ...
- Python基础2:流程控制语句 while / for循环
[ while 循环 ] 如果要计算1+2+3,我们可以直接写表达式: >>> 1 + 2 + 3 要计算1+2+3+...+10,勉强也能写出来. 但是,要计算1+2+3+...+ ...
- IE的layout属性详解
http://www.cnblogs.com/yuzhongwusan/archive/2012/03/09/2387052.html 很多在谷歌浏览器(chrome).火狐浏览器(Fire Fox) ...