十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
实话说学习是没有捷径的,最多也就是有一些学习的方法和技巧。关于学习JavaScript也就是js我分享一下我这个菜鸟的学习方法,只是个人的一些看法,不喜勿喷。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信平台小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了香河免费建站欢迎大家使用!
1、基础要学的好
学过js的都是知道的,js的一些基础的语法和一些变成语言是不一样的,所以需要额外的注意一些基础的语法,举例来说:作用域,一般的编程语言都是全局变量函数外有效,函数内的变量函数内有效,而js是不一样的,js的全局变量函数外和函数内都有效,函数内的函数只函数内有效。还有js是基于对象的语言,但是为了支持面向对象的编程思想,js使用函数来模拟类或者是对象的概念,这些都是比较难理解的,含有一些js的地层东西如原型链、上下文等也是非常的不好理解,这就需要基础的知识一定要扎实才能行。
2、多练习和实践
其实学习编程都是这样的,多动手多思考是学习编程语言的最好办法,很多东西看起来简单但是做起来就非常难了,解决的方法是学习js要和做网页特效联系起来,毕竟js的一个很大的应用方向就是实现网页的效果和一些交互,所以学习基础的同时要试着使用原生的js代码来实现一些网页特效,从中可以学到js这门语言的博大精深。
2、学习面向对象的编程思想
虽然js对于面向对象编程的支持不是很完美,但是一些js的大神使用了一些很多的方法,如构造函数等模拟了一些比较完整的面向对象编程,所以难点也出来了,那就是js的面向对象要比其他的语言复杂难理解。
4、学习js的一些框架
使用原生的js进行开发太难了,但是我们可以通过js的框架来解决这个问题,基础的框架如jQuery,还有比较高级的框架如angularjs都是很不错的东西,只是js原生学的好,这些框架也就比较好理解了
ECMAScript、DOM、BOM
JavaScript的三大组成部分是:
1、ECMAScript:JavaScript的核心,描述了语言的基本语法(var、for、if、array等)和数据类型(数字、字符串、布尔、函数、对象(obj、[]、{}、null)、未定义),ECMAScript是一套标准,定义了一种语言(比如JS)是什么样子。
2、文档对象模型(DOM):DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。请考虑下面的 HTML 页面:
html
head
titleSample Page/title
/head
body
phello world!/p
/body
/html
这段代码可以用 DOM 绘制成一个节点层次图:DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API 可以轻松地删除、添加和替换节点(getElementById、childNodes、appendChild、 innerHTML)。
3、浏览器对象模型(BOM)对浏览器窗口进行访问和操作。例如弹出新的浏览器窗口,移动、改变和关闭浏览器窗口,提供详细的网络浏览器信息(navigator object),详细的页面信息(location object),详细的用户屏幕分辨率的信息(screen object),对cookies的支持等等。
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()名是在主程序中,所以输出都是全局变量的!只不过是全局变量与局部变量的值有没有被覆盖而已.当你看到它输入出的值是”局部变量”时,并不表示他是局部变量.变量的作用域与变量的值完全是两码事,不可混为一谈!
我的例子与第二个例子做一下比较,你的理解会更深刻的.这种情况,如果输入的是”全局变量”时才是全局变量,输出的是”局部变量”时才是局部变量!想一想为什么吧!
JavaScript简称js,是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。
JavaScript同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。
特点
1、JavaScript可以创建活跃的用户界面,当用户在页面间导航时向他们反馈。
2、使用JavaScript来确保用户以表单形式输入有效的信息,这可以节省业务时间和开支。
3、JavaScript还可以处理表单,设置cookie,即时构建HTML页面以及创建基于Web的应用程序。
4、使用JavaScript,根据用户的操作可以创建定制的HTML页面。