扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
JavaScript的优点是让网页更活灵活现 他能补助与网页实现各种功能和穿插 JavaScript 语言的前身叫作LiveScript。自从Sun公司推出著名的Java语言之后, Netscape公司引进了Sun公司有关Java的程序设计概念,将自己原有的LiveScript重新进行设计,并更名为JavaScript。这所 以取名为JavaScript,原因就在于JavaScript作为一种嵌入HTML文档的、基于对象的脚本设计语言。其中很大一部分的语法同Java语 言很相似,而且JavaScript的设计可以使它很容易地同Java语言一同工作,它可以充分支持Java的applet小应用程序,Java的 applet小应用程序也可以很方便地访问已有的JavaScript代码。所以,也可以JavaScript看成是Java语言的某种简化版本。 JavaScript的优点 在JavaScript这样的用户端脚本语言语言出现之前,传统的数据提交和验证工作均由用户端浏览器通过网络传输到服务器上进行。如果数据量很大,这对于网络和服务器的资源来说实在是一种无形的浪费。而使用JavaScript就可以在客户端进行数据验证。 JavaScript可以方便地操纵各种浏览器的对象,可以使用JavaScript来控制浏览器的外观,状态甚至运行方式,可以根据用户的需要“定制”浏览器,从而使网页更加友好。 JavaScript可以使多种任务仅在用户端就可以完成而不需要网络和服务器的参与,从而支持分布式的运算和处理。 JavaScript的局限性 在WWW 上有很多浏览器,如Netscape Navigator,Mosaic和HotJava等,但每种浏览器支持JavaScript的程度是不一样的,支持和不完全支持JavaScript的 浏览器在浏览一个带有JavaScript脚本的主页时,效果会有一定的差距,有时甚至会显示不出来。 当把JavaScript的一个设计目 标设定为"Web安全性"时,就需要牺牲JavaScript的一些功能。这时,纯粹的JavaScript将不能打开、读写和保存用户计算机上的文件。 它有权访问的唯一信息就是它所嵌入的那个Web主页中的信息,简言之,JavaScript将只存在于它自己的小小世界----Web主页里。 希望对你有帮助
因为努力和真诚,有更多的客户和我们聚集在一起,为了共同目标,成都创新互联在工作上密切配合,从创业型企业到如今不断成长,要感谢客户对我们的高要求,让我们敢于面对挑战,才有今天的进步与发展。从网站到重庆小程序开发公司,软件开发,app软件开发,10年企业网站建设服务经验,为企业提供网站设计,网站托管、服务器租用一条龙服务.为企业提供成都全网营销推广,按需定制开发,原创设计,10年品质,值得您的信赖.
你脚本的位置放错了,你执行那段脚本时,html代码还没解析完,dom也没生成好。所以报错。
这样写,或者在onload后再调用。
body
form name="js" method="post"
/form
/body
script
function user(){
var form=document.getElementsByTagName("form")[0];
this.name=function(){
return form.getAttribute("name");
};
}
var user=new user();
alert(user.name());
/script
不知道,大家对语言中变量的“声明”与“定义”是怎么理解的,
我的理解如下:
“声明”变量,只是仅仅声明,而“定义”变量,指声明了,并且赋值了。
例如:
复制代码
代码如下:
var
name;//只是声明
var
num
=
11;//声明,并且赋值,即定义了
var
password
=
"yangjiang";//声明,并且赋值,即定义了
下面是几点总结:
变量的作用域:全局的和局部的。(注意:如果尝试读取一个未声明的变量的值,javascript会生成一个错误)
第一点:在都使用var关键字修饰变量的情况下,如果给一个局部变量或函数的参数声明的名字与某个全局变量的名字相同,
那么就有效地隐藏了这个全局变量。
例如:
复制代码
代码如下:
var
scope1
=
"global";//var修饰
function
checksScope(){
var
scope1
=
"local";//var修饰
document.write(scope1);
}checksScope();//local
第二点:如果尝试给一个未用
var
关键字声明的变量,那么,隐式声明的变量总是被创建为全局变量,即使
该变量只在一个函数体内使用(只有该函数运行了,才会发生作用),注意不支持函数嵌套的情形。
例如:
复制代码
代码如下:
scope2
=
"globalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
function
checkScopeA(){
scope2
=
"localAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write("br/"+scope2);
myscope
=
"myLocalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write(","+myscope);
}
checkScopeA();//localAAAAA,myLocalAAAAA
*A
document.write("br/"+scope2);//localAAAAA
*B
document.write("br/"+myscope);//myLocalAAAAA
*C
如果将上面的例子中的
*A处的代码注释掉,
例如:
复制代码
代码如下:
scope2
=
"globalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
function
checkScopeA(){
scope2
=
"localAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write("br/"+scope2);
myscope
=
"myLocalAAAAA";//没有使用var修饰(js会默认将其声明为全局变量)
document.write(","+myscope);
}
//checkScopeA();
*A
document.write("br/"+scope2);//globalAAAAA
*B
document.write("br/"+myscope);//发生错误
*C
因为函数checkScopeA没有执行,所以
*B处输出为globalAAAAA;
因为函数checkScopeA没有执行,所以变量myscope没有声明,如果尝试读取一个未声明的变量,会发生错误。
第三点:
在javascript中,函数的定义是可以嵌套的。由于
每个函数都有它自己的局部作用域,所以有可能出现几个局部作用域的嵌套层。
例如:
复制代码
代码如下:
var
scope3
=
"global
scope";
//定义了一个全局变量
function
checkScopeB(){
var
scope3
=
"local
scope";
//定义了一个局部变量,覆盖了全局变量scope3
function
nested(){
var
scope3
=
"nested
scope";
//在函数的函数的内部,定义了一个局部变量
document.write("br/"+scope3);
//nested
scope
}
nested();
}
checkScopeB();//nested
scope
第四点:
在javascript中,没有块级作用域,函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有声明的。
在javascript中,没有块级作用域,函数中定义的所有变量,无论是在哪里定义的,在整个函数中它们都是有定义的。
例如:
复制代码
代码如下:
function
test(o){//根据以上的说明:此函数中的i,j,k三个变量的作用域是相同的。
var
i
=
0;
//变量
i
在整个函数中都有定义
if(typeof
o
==
"object"){
var
j
=
;
//变量
j
在整个函数中都有定义,而不仅仅是在
if
语句块
for(var
k=0;k10;k++){//变量
k
在整个函数中都有定义,而不仅仅是在
if
语句块
document.write("br/k的值为:"+k);
}
document.write("br/for循环外k的值:"+k);//此时的
k
仍然被定义了,k=10
}
document.write("br/j的值:"+j);
//变量
j
被声明了,但可能没有被初始化
因为可能往函数中
传入的参数
不是对象
,if语句块不会执行
}
下面通过两种方式调用此函数:
方式一:传入对象
test({});//输出结果:上例中的注释
方式二:什么都不传
test();//输出结果:j的值:undefined
想不明白的是,在第二种方式中的输出结果,为什么会是
undefined。我当时猜的是:j的值:0
后来,这本书上面说:
由于局部变量在整个函数体内都是有声明(或定义)的,这就意味着在整个函数体中都隐藏了同名的全局
变量。虽然
局部变量在整个函数体内中都是有声明(或定义)的,但是在执行var语句之前,它是不会被初始化的。
这样的话,上面的方式二调用的输出结果,就比较好解释了,由于变量j在整个函数中都有定义,而又由于传入函数的参数为空,所以函数体中的if语句不会执行,从而使得j的值为undefined.(这是我参照上面书上说的那句话的理解)
下面的例子,更好的说明:
复制代码
代码如下:
var
sssss
=
"全局变量";
function
f(){
document.write("br/"+sssss);//输出:undefined
而不是输出"全局变量"
var
sssss
=
"局部变量";
document.write("br/"+sssss);//输出:局部变量
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流