js如何加注释啊

JavaScript047

js如何加注释啊,第1张

编程过程中注释是十分重要的,在javascript(js)语言里面的注释方法有三种

1.第一种是多行注释”/**/”,一般js文件开头,介绍作者,函数等信息。

/* author:xxx *day:2007-12-04 */

2.第二种注释方法是最常见的”//”,在程序间随处可见,只能注释单行

//这是一行注释,只能注释单行。

//另一行注释

3.第三种注释不是很常见,会和html内的注释混淆,不推荐使用

<!-这是一行注释,只能注释单行

第三种方法后面是不要加<!这是和html注释不一样的地方

这是一个关于table的操作

var speed=30//定义函数执行的毫秒数

var tab=document.getElementById("demo")//得到 id为 demo的对象

var tab1=document.getElementById("demo1")//得到 id为demo1的对象

var tab2=document.getElementById("demo2")//得到id为demo2的对象

tab2.innerHTML=tab1.innerHTML//将 tab2的样式赋给tab1

/**

获取tab2的横坐标和tab的横坐标(距离窗口左侧的长度)进行比较如果小于等于零执行 将

tab的位置还原为tab1的位置(指横坐标)否则将tab向右移动当前坐标的长度

此函数实现了tab的向右移动 并且随着调用次数的增多会越来越快

*/

function Marquee(){

if(tab2.offsetWidth-tab.scrollLeft<=0)

tab.scrollLeft-=tab1.offsetWidth

else{

tab.scrollLeft++

}

}

var MyMar=setInterval(Marquee,speed)//以30微秒的速度执行Marquee函数

tab.onmouseover=function() {//当鼠标移动到tab上时停止tab的滚动

clearInterval(MyMar)

}

tab.onmouseout=function() {//当鼠标移开时继续滚动

MyMar=setInterval(Marquee,speed)

}

this 指的是 函数运行时 所在的环境。(不是定义时所在的环境)

怎么理解这句话呢?看如下例子:

在这个例子中,首先第一个输出,因为wFunction是运行在全局环境中,所以 this 指向全局环境,所以输出1;第二个输出,因为wFunction运行在wObj环境中,所以 this 指向wObj,而wObj的w属性值为2,所以输出2;

那么问题来了,为什么第二个说是在wObj环境中运行呢,运行环境是怎么来判别的呢?这得从内存的数据结构说起。

首先,是考虑到内存的数据结构,才设计这个this的。那内存的数据结构是怎样的呢,先看个例子:

这里,javaScript引擎会在内存里先生成一个对象{w:5},然后把这个对象的内存地址(reference)赋值给wObj变量。

如果通过wObj.w来读取这个对象的属性w,则引擎会先从wObj这个变量拿到对象的内存地址,然后从该地址读出这个对象,返回w属性。

在看下面一个例子:

这里,javaScript引擎会先将函数function(){...} 单独保存在内存中 。然后javaScript引擎会在内存里生成一个对象{wFunc:wFunction},而wFunction则是函数的内存地址(reference)。然后把这个对象的内存地址赋值给wObj变量。

如果通过wObj.wFunc()执行函数,则引擎会先从wObj这个变量拿到对象的内存地址,然后从该地址读出这个对象,返回wFunc属性,而wFunc属性的值是函数function(){...}的内存地址(reference),因为这个 是单独的一个值,所以可以在不同环境(上下文)执行 。在这里函数是通过wObj找到的(wObj的属性wFunc),所以在wObj环境中执行的。

这里解释了为啥函数是可以在不同的环境中执行。那么问题来了,这动态的执行环境,怎么获取呢?

针对获取执行环境问题, this 就这么设计出来了,它的设计目的就是在函数体内部,指代函数 当前的运行环境

回到文章开头例子,并加以深化如下:

第一个输出,函数执行时,是通过全局变量wFunction找到函数引用地址的,它的执行环境则是全局,因此输出全局w,为1;

第二个输出,函数执行时,是通过wObj指向的对象里的wFunction属性找到的函数引用地址的,因此,它的执行环境则是wObj指向的对象,因此输出对象的w,为2;

第三个输出,函数执行时,是通过全局变量wObjFunc找到函数引用地址的,(因为let wObjFunc = wObj.wFunction这直接把函数的引用地址直接赋给了全局变量wObjFunc,所以wObjFunc直接指向函数本身)它的执行环境则是全局,因此输出全局w,为1;