扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
不是的,两者有很大的差别。语法方面JavaScript的基本语法和对象体系,是模仿Java而设计的。但是,JavaScript没有采用Java的静态类型。正是因为JavaScript与Java有很大的相似性,所以这门语言才从一开始的LiveScript改名为JavaScript。基本上,JavaScript这个名字的原意是“很像Java的脚本语言”。千锋官网每日更新最新软件开发基础知识内容,巩固日常学习中的基础技能。更有免费的软件开发视频教程帮助学员快速学习。 千锋教育就有线上免费的软件开发公开课,。
创新互联公司为客户提供专业的做网站、网站建设、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、手机网站开发等网站方面业务。
在JavaScript语言中,函数是一种独立的数据类型,以及采用基于原型对象(prototype)的继承链。这是它与Java语法最大的两点区别。JavaScript语法要比Java自由得多。数据结构部分则借鉴Java语言,包括将值分成原始值和对象两大类。另外,Java语言需要编译,而JavaScript语言则是运行时由解释器直接执行。总之,JavaScript的原始设计目标是一种小型的、简单的动态语言,与Java有足够的相似性,使得使用者(尤其是Java程序员)可以快速上手千锋教育集团目前已与国内4000多家企业建立人才输送合作,与500多所大学建立实训就业合作,每年为各大企业输送上万名移动开发工程师,每年有数十万名学员受益于千锋教育组织的技术研讨会、技术培训课、网络公开课及免费教学视频。
JavaScript的特点
(1).一种解释性执行的脚本语言。
同其他脚本语言一样,JavaScript也是一种解释性语言,其提供了一个非常方便的开发过程。JavaScript的语法基本结构形式与C、C++、Java十分类似。但在使用前,不像这些语言需要先编译,而是在程序运行过程中被逐行地解释。JavaScript与HTML标识结合在一起,从而方便用户的使用操作。
(2).一种基于对象的脚本语言。
其也可以被看作是一种面向对象的语言,这意味着JavaScript能运用其已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。
(3).一种简单弱类型脚本语言。
其简单性主要体现在:首先,JavaScript是一种基于Java基本语句和控制流之上的简单而紧凑的设计,从而对于使用者学习Java或其他C语系的编程语言是一种非常好的过渡,而对于具有C语系编程功底的程序员来说,JavaScript上手也非常容易;其次,其变量类型是采用弱类型,并未使用严格的数据类型。
(4).一种相对安全脚本语言。
JavaScript作为一种安全性语言,不被允许访问本地的硬盘,且不能将数据存入服务器,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失或对系统的非法访问。
(5).一种事件驱动脚本语言。
JavaScript对用户的响应,是以事件驱动的方式进行的。在网页(Web Page)中执行了某种操作所产生的动作,被称为“事件”(Event)。例如按下鼠标、移动窗口、选择菜单等都可以被视为事件。当事件发生后,可能会引起相应的事件响应,执行某些对应的脚本,这种机制被称为“事件驱动”。
(6).一种跨平台性脚本语言。
JavaScript依赖于浏览器本身,与操作环境无关,只要计算机能运行浏览器,并支持JavaScript的浏览器,就可正确执行,从而实现了“编写一次,走遍天下”的梦想。
因此,JavaScript是一种新的描述语言,其可以被嵌入到HTML文件中。JavaScript语言可以做到响应使用者的需求事件(例如表单的输入),而不需要任何的网络来回传输资料。所以当一位使用者输入一项资料时,此资料数据不用经过传给服务器(server)处理再传回来的过程,而直接可以被客户端(client)的应用程序所处理。
o 是 对象 对象用法跟 数组差不多
比如 var o = {'a':10 , 'b': 20};
可以 alert( o['a'] ); //10
比如
var o = {'a':10 , 'b': 20}; //这个就是 对象定义 {属性:值 , 属性:值 , 属性:值}
var a = ['a', 'b', 'c']; //这个是 数组
var i = 1;
这个时候 a[i] 是 字符 b
那么 o[a[i]] 就等于 o['b'] 也就是 20了
-----
比如
var o = {'a':10, 'b': 20, ‘c’:[3,6,9] }; // o是对象 有 3个属性 第3个属性c 本身又是 数组
var a = ['a', 'b', 'c'];
var i = 2;
var j = 1 ;
那么 o[a[i]] 等于 o[a[2]] 等于 o['c'] 就是 那个 [3,6,9]数组了
那么 o[a[i]][j] 就 等于 o['c'][j] 等于 o['c'][1] 等于 6
你理解错误了,输入结果是由alert进行的一个全局变量的输出,也就是说alert(msg)中的msg变远是全局变量.
而在第一个例子中,由于show是引用了全局变量,并将全局变量的值更改为"局部变量",也就是说show函数在执行时并没有开辟新的变量,而是将全局变量的值更改了,所以显示的是"局部变量",但msg却不是一个局部变量,不能做为局部变量去理解的.
在第二个例子中,由于使用了var msg,在JS或是C中都是这样的处理的,而不是不同于C,var 表示开辟新的内存空间,这里会出现两个msg变量,但是你别忘记了,show函数内部的msg当show函数执行完毕返回到主程序中时,这个局部变量已经不存在了.而alert(msg)显示的仍然是主程序中的变量,当然,show函数的变量不会了生任何的覆盖的.所以会显示出”全局变量”.
也就是说,两次显示的都是全局变量的值,虽然值有改变的.所以我想你可能将第一个变量想成了局部变量的,所以你错了!
但是二楼,JS与C同属于EMCA-262语言核心,在这一点上有什么区别?
我给楼主一个例子,楼主可以看一下:
script
var msg ="全局变量";//开辟全局变量
function show(){
var msg="局部变量";
alert(msg);//此处输出的是局部变量,因为这些函数体内如果有同名的全局变量昌被屏掉了.
}
/script
也就是说只有在我的这种情况是输出的局部变量,而在你的两个例子中由于alert()名是在主程序中,所以输出都是全局变量的!只不过是全局变量与局部变量的值有没有被覆盖而已.当你看到它输入出的值是”局部变量”时,并不表示他是局部变量.变量的作用域与变量的值完全是两码事,不可混为一谈!
我的例子与第二个例子做一下比较,你的理解会更深刻的.这种情况,如果输入的是”全局变量”时才是全局变量,输出的是”局部变量”时才是局部变量!想一想为什么吧!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流