1
66beta 2014-01-22 12:08:03 +08:00 1
不如先学下python或者PHP吧,比较简单,好上手,成就感来得快
话说,从初级向中级进步路上,我觉得JS比上面2者难得多 |
2
chemzqm 2014-01-22 12:09:50 +08:00
犀牛书 javascript the good part
|
3
83f420984 OP @chemzqm 犀牛书比JavaScript DOM编程艺术更加难啃,我看了3页就放弃了,直接看JavaScript DOM编程艺术+视频
|
4
srdrm 2014-01-22 12:13:38 +08:00
你要是编程零基础就别看什么编程艺术了,找个傻瓜书啥的
|
5
turing 2014-01-22 12:14:07 +08:00 1
我觉得反复看蝴蝶书就好了。写代码主要在写。读书可以大略地读,快速看完,不懂也没有关系,看完之后根据自己仅有的知识和理解去写,一遍遍试错的过程中就能真正地理解编程语言了。
|
6
serenader 2014-01-22 12:21:59 +08:00 4
目前我也在学 JavaScript ,前期我也是先看 JavaScript DOM 编程艺术,在练习完里面的那个图片库案例之后我就开始看 JavaScript 高级程序设计了。
JavaScript DOM 编程艺术相对来说还是比较好理解的吧?我个人觉得里面的例子我自己都可以理解。只不过 DOM 编程艺术里面并没有详细地教你 JavaScript 最基础的东西。我个人感觉只是纯粹在讲关于 DOM 这方面的内容。 而 JavaScript的 基础知识个人认为在 JavaScript DOM 编程艺术里面学不到的。 基础知识还是看JavaScript高级程序设计 或者JavaScript权威指南。学完整本书的内容应该能够掌握大部分知识了吧,我觉得。因为自己还在学习当中,不好下结论。 另外上次有人在 V2EX 上发了个 如何正确学习 JavaScript 的链接, 我顺便贴上来吧。 http://javascriptissexy.com/how-to-learn-javascript-properly/ 里面的内容是围绕 JavaScript 高级程序设计 和 JavaScript 权威指南写的,如果还没有这两本书最好去买本吧。 共勉。 @66beta 搭车请教一下, Python 和 PHP 真的比 JavaScript 简单吗?对于入门来说。我本来自己打算先学好 JavaScript 和基础的 HTML 和 CSS 再去系统学习 PHP 或者其他后端语言。如果说 Python 和 PHP 真的比较容易入门,那么有什么好方法入门呢? |
7
seiwev 2014-01-22 12:23:14 +08:00
你不明白说明你没有基础,先看一些基础的书吧。可以翻翻Code Complete里面讲数组、对象。
|
9
bakac 2014-01-22 12:34:56 +08:00
要有目标(例如必须要在短期解决的问题)才会有动力, 然后边看边实践.
|
10
thinkif 2014-01-22 12:37:04 +08:00
先找本书或者网络教程学习一下基础语法之类的
看书的时候不容易理解也没关系, 看过去, 有了后面的知识回头再去研究前面不明白的地方就豁然开朗了 |
11
kzy9007 2014-01-22 12:40:06 +08:00
我也想学 买了一本书研究中~~
|
12
FrankFang128 2014-01-22 12:42:28 +08:00 via Android
因为你没有了解过内存层面的东西,所以对数组没有具体的认识。
但是,记住它的特点就好,用久了就知道了。 |
13
lemonlwz 2014-01-22 12:42:46 +08:00
一本语言精萃足已
|
14
FrankFang128 2014-01-22 12:43:00 +08:00 via Android
有一种学习方式叫Bug驱动学习
|
15
guchengf 2014-01-22 12:43:37 +08:00 1
语言精粹用来自学不是什么好选择。。。
|
16
FrankFang128 2014-01-22 12:44:59 +08:00 via Android
@lemonlwz 怎么可能足矣,人家没有其他语言基础,连数组是什么都没理解
|
17
donwa 2014-01-22 12:46:18 +08:00 via iPhone
先玩jquery吧。玩熟了再研究javascript。
jquery很容易上手。 |
18
sanddudu 2014-01-22 12:49:31 +08:00
你学习的姿势不对
|
19
luoyou1014 2014-01-22 13:03:59 +08:00
别听那些说要学别的语言的, 光装环境就烦死人.
学习要有一个目标才能学好, 没有目标跟容易在原地踏步, 所以先给自己定个目标, 比如幻灯片等等 至于对象, 闭包什么的, 那些都是概念, 不理解也不要紧, 会用即可, 用多了自然就会了. 同样推荐从jquery入门, 你有了基础, 看jquery会更方便, 推荐过一遍w3school上面的教程. PS: 生活中喜欢学习的真难找啊, 网上到是有很多..... |
20
sunus 2014-01-22 13:09:25 +08:00
|
21
edward1992 2014-01-22 13:11:34 +08:00
别怕,学Javascript是有用的,web现在呈现一个js大一统的趋势,学Javascript大方向上错不了。
但是Javascript是一门设计很不完善的语言,很多琐碎的语法细节会让你花掉很多时间。 建议还是结合到具体项目来学习。我说的项目不用很大,比如自己打个博客什么的就够了。 |
22
tonitech 2014-01-22 13:19:18 +08:00
你以前学过其他的语言吗?
|
23
learnshare 2014-01-22 13:28:38 +08:00
@donwa
@luoyou1014 我推荐先学 jQuery,比原生 API 容易上手。 其实入门的第一步是 w3school(去操作一下里边的演示,然后随便修改、运行一下),然后是一本详细的书(比如 JS 权威指南 6),下一步是学习高级用法(面向对象、设计模式什么的),最后是应用(随时参考 MDN、webplatform 的文档) |
24
83f420984 OP @learnshare 没有学的其它的语言
|
25
84840 2014-01-22 13:40:48 +08:00
在线教程看这里:http://www.w3school.com.cn/js/index.asp,可以参考。
学JAVAScript先看基础教程语法,弄懂逻辑,学下基本算法(类是数据结构),看例子 推荐这本书:《JavaScript高级程序设计(第3版)》http://product.dangdang.com/22628333.html#ddclick?act=click&pos=22628333_1_1_p&cat=01.00.00.00.00.00&key=javascript&qinfo=&pinfo=411_1_72&minfo=&ninfo=&custid=&permid=20140121100535128766675347823607755&ref=http%3A%2F%2Fsearch.dangdang.com%2F%3Fkey%3Djavascript%26category_path%3D01.00.00.00.00.00&rcount=&type=&t=1390368832000 希望对你有帮助 |
26
TankyWoo 2014-01-22 13:42:20 +08:00
现在一般都是事件驱动式学习。
|
27
83f420984 OP |
30
84840 2014-01-22 13:52:18 +08:00
常用的算法Javascript版参考这里http://www.nowamagic.net/librarys/veda/detail/167
|
31
ianva 2014-01-22 13:54:43 +08:00
1. JavaScript DOM编程艺术 这本书最好的地方在于你不需要关心javascript是什么就能做出一些效果来,让新手有兴趣玩下去
2. javascript 是一门语言,dom 不是javascript的一部分 dom 是 Document object model 就是浏览器提供的用来操作文档的一种办法,但它本身是低级或中级的api,也就说面向的应用方式相对底层,所以用起来很不方便,不同的浏览器实现也有差异,所以用一些dom 库会更好,如jquery,要分清楚什么是语言,什么是平台提供的api。 3. 因为大部分时候javascript面对的平台是浏览器(node.js是另一个方向),所以可以通过实现一些浏览器上的小功能去学习,jquery是个易用的东西,他能帮助很容易你将学习到的javascript的语言特性呈现出来。 4. 现在这个阶段了解原生的dom接口意义并不大,因为像jquery,mootools,yui这些库已经把dom能做到的99%的事情都实现了,能用更方便的接口为什么要用原生呢,用原生本身就是对项目的不负责,因为跨浏览器本身会遇到的问题比你想想的要多太多了,如果看过一些库源码相信可以了解到,不但会降低项目的稳定性,还会带来各种维护性问题。 推荐的书目: 1. javascript 权威指南(David Flanagan) 2. JavaScript高级程序设计(Nicholas C. Zakas) 3. javascript 语言精粹(Douglas Crockford) 4. JavaScript设计模式(Addy Osmani) |
32
coolicer 2014-01-22 13:54:49 +08:00
成长是有个过程的。我当时也经常在问自己,虽然现在JS很久没写,感觉也差不多。懂了语法,剩下的只有算法要靠自己想了。
|
33
84840 2014-01-22 13:54:57 +08:00
|
34
learnshare 2014-01-22 13:57:38 +08:00
@83f420984 JS 不太需要其他语言的基础就可以学习的
|
35
Mutoo 2014-01-22 14:11:35 +08:00
"现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等"
这些程序概念的出现都是为了解决特定问题的,显然你没有遇到,或者还没正视这些问题。 刚开始编程的时候,你肯定会用大量的变量,x y z x0 x1 x2 ... 越来越多,多到你都不知道要怎么给它们起名字,(除非你还在写很小的程序),数组就是为了帮你分组一些数据用的。 somethings = [...] 你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ... 然后你会学到循环,连索引都不用自己打了,用循环变量来统领它们。 for(i=0;i<len;i++) doSomething(somethings[i]); 然后你会接触到越来越强大的指令,编程的过程就是循序渐进的。 对象可以让你以更宏观的角度去解决问题。 闭包可以让你区分或隐藏数据(不要问我为什么要隐藏)。 不过我还是不理解你为什么会吃力……有人逼你一个星期要学完吗? |
36
83f420984 OP @Mutoo 讲的太好了,用很直白的语言说明了JS的对象,数组等起的作用;
吃力是因为学一个知识点,需要很长时间的理解和不断的练习才明白它要作用和用法 |
37
Mutoo 2014-01-22 14:31:08 +08:00 1
@83f420984 多动手,多看书,耐心。一个概念没看懂,就换几本书看,不同的书会从不同的侧面来解释同样的事物。当你看懂了,再回过头就很容易了。
“然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑” 这就是一个很好的开始。 |
38
hkongm 2014-01-22 14:53:30 +08:00
JavaScript高级程序设计(Nicholas C. Zakas)
|
40
raincious 2014-01-22 14:58:40 +08:00
@Mutoo
>> 你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ... Bad practice. 建议一定要节省变量或者有一定洁癖的话,用Object搞定。 var setting = { url: '', type: '' }; 这样比 var url = '', type = '';简洁。 但是不给变量起名字,相当于 var a=0, b=0, c=0;,很明显不符合规范。 |
41
Mutoo 2014-01-22 15:09:23 +08:00
@raincious
风格习惯是一回事,但我想表达是这样的例子,我看过很多同学这样写程序(当然,是在他们还不懂数组的时候): var ball0 = new Ball(); var ball1 = new Ball(); var ball2 = new Ball(); // loop ball0.update(); ball1.update(); ball2.update(); ball0.render(); ball1.render(); ball2.render(); ... 而用数组就不再需要起这么蹩脚的名字了: var balls = []; for(var i=0;i<counts;i++) balls.push(new Ball()); // loop for(var i=0;i<counts;i++) {balls[i].update(); balls[i].render()}; |
42
raincious 2014-01-22 15:19:20 +08:00
@Mutoo
你上面的例子本身就需要用到数组,因为是大量建立同一类型的对象。为了后期对这些对象进行批量维护,也需要建立数组。 但是 “你再也不用去给里面的东西起名字了,而可以通过索引来引用它们” 这句是不对的。因为在很多情况下,建立变量(好吧,其实你建立的数组也是一个变量的值)来储存数据并不适用你说的情况。比如要建立一个配置表,之类。 代码是给人读的,保持易读性相当重要。 |
43
flynngao 2014-01-22 16:34:52 +08:00
为何非常吃力……,我觉得js是超级蠢的语言了,弱类型而且很多情况不用考虑溢出……
|
44
bzw875 2014-01-22 16:39:03 +08:00
@84840 我也是看完《javascript DOM 编程的艺术》后选择这本《JavaScript高级程序设计(第3版)》来看的。
|
45
kran 2014-01-22 17:03:15 +08:00
不建议初学者学习js
|
46
wity_lv 2014-01-22 17:06:22 +08:00 1
@flynngao
Javascript非常接近两门门非常优秀的语言(C + Lisp). 其实javascript也非常优秀。 推荐看这两本书,很薄,很无压力: Javascript Good Part http://book.douban.com/subject/2994925/ Functional Javascript http://book.douban.com/subject/22733640/ 踩坑踩怕了,看这个: http://bonsaiden.github.io/JavaScript-Garden/zh/ @84840 建议跟着这里的教程学一遍: http://www.codecademy.com/zh/dashboard 书,推荐: turing的《Javascript 基础教程》 《Javascript高级编程》,不推荐。如果没有大量的js实战做经验,这本书属于自虐。 《Javascript权威指南》,不推荐,理由同上。此书的厚度等同于新华字典,通读纯属自虐。当工具书翻看非常合适。 关于DOM方面,看书不合适,看“编程艺术”类的书更不推荐,没有大量经验,不踩大量坑,对此类书不会有什么共鸣,反而会对初学者造成很多束缚。 学习DOM推荐w3cschool的文档,过一遍非常轻松. http://www.w3school.com.cn/htmldom/index.asp?utm_source=twitterfeed&utm_medium=twitter |
47
whatsupbitch 2014-01-22 17:15:32 +08:00
javascript的dom操作很蛋疼 所以我觉得还是python php好 一边写网站一边练js
|
48
mactaew 2014-01-22 17:18:25 +08:00 via Android
所以我个人觉得那个入门先学C的年代挺好的,我是从C入门的,后面的学习理解起其他需要来都还是很快的。
|
49
MingZhe 2014-01-22 17:24:52 +08:00 1
有关看技术类的书籍我来说一下吧,像楼主那么看,一章看几个星期,看不懂是正常的,不懂的东西,再盯着看也不一定懂。读书一定要快,迅速看完一本书,能记住多少就记住多少。离散的点多了,就串成线了。。。在没有认识自然数的时候,就想找到1~10中所有的点,是不太现实的。
|
50
yyfearth 2014-01-22 17:33:59 +08:00
@83f420984 不明白什么是对象,什么是数组,什么是闭包
这个不是JS的问题,而是计算机编程基础,看来LZ没有计算机专业的背景啊,需要了解一些计算机编程的基础,任何一门语言C/C++/Java/C#入门比较推荐,另外就是基本的数据结构和算法 如果LZ学过C啊,数据结构算法啊之类的,学学JS也还不错 如果LZ真的是完全从零开始学编程,JS确实不是很推荐,对以后的学习可能会造成不好的影响 而且你说的书基本上都对你来说太难了,因为你很多基础概念不熟悉,不知道所以然 另外JS最麻烦的地方就是 DOM操作 面向对象编程 以及 闭包,这些东西至少要你比较了解基本的程序开发,数据结构和熟练使用简单的JS或者jQuery之类的类库之后再慢慢啃 |
51
bombless 2014-01-22 19:59:32 +08:00
先有别的语言的基础当然会学的快……所以个人感觉重点在于没有捷径……
|
52
miniwade514 2014-01-22 20:15:12 +08:00
我认为,没有编程基础的时候还不适合学 JavaScript,这门语言多少有点非主流,建议先通过 C 或者 C++ 来学习一下最基本的编程,把对象、数组、作用域这些东西理解了,再学 JavaScript。按这样的流程,你应该会觉得 JavaScript 这门语言本身很简单、很单纯,需要下功夫的地方是活用、善用。
《JavaScript DOM 编程艺术》这本书是最早让我迷上 JavaScript 的书。把书上代码都敲下来,一个 Demo 就出来了,这 Demo 比其他语言在终端里面的 output 生动太多了,兴趣一下子就上来了。当然,这本书里涉及的知识还是比较窄的,系统学习还需要其他的书。 |
53
January 2014-01-22 20:33:17 +08:00
"是"
|
54
zzNucker 2014-01-22 21:04:01 +08:00
javascript哪里接近lisp了。。。
|
55
83f420984 OP |
57
jesse_luo 2014-01-22 21:39:04 +08:00
学js时花了几天写了个chrome插件,算是了解了语法
我觉得些chrome插件不错,学习的时候可以把重心放在js语言上 |
58
wity_lv 2014-01-22 22:12:48 +08:00
@flynngao "我觉得js是超级蠢的语言了,弱类型而且很多情况不用考虑溢出……"
我把"超级蠢"理解成“烂”。 我一直很喜欢javascript这门语言,希望能推广一下javascript好的部分,减少对js误解。 P.S: "弱类型而且很多情况不用考虑溢出……" 求详解. |
59
dorentus 2014-01-22 23:06:13 +08:00 via iPad
|
60
Geeker 2014-01-22 23:06:41 +08:00
必然是项目驱动学习更好啊,最近实习要做网页,看了看就得上手了,用到不会的立马google,然后现学现用,学起来很快的。不要想把细节问题搞清楚,有些坑说不定一辈子也碰不到,所以先掌握核心,遇到了自然再搜
|
61
xcatliu 2014-01-22 23:19:46 +08:00
如果致力向前端发展,这儿有个前端知识结构,明确大的行进方向
https://github.com/JacksonTian/fks |
62
giumo 2014-01-22 23:31:01 +08:00
寒假刚开始在Codecademy上面学Javascript现在学到对象 觉得挺好上手的 在学校有C++的基础什么觉得相比之下简单了很多http://www.codecademy.com/
|
64
j 2014-01-23 09:44:33 +08:00
找个让自己开心的学习途径,我跳跃度高,你看不懂的话自行补充:
1 做码农最需要的是要会“拼.字.符.串”,跟什么计算机基础关系不大,好好练习object,string,array,正则(一点点)就可以了(此时此刻别碰jq) 2 然后遇到前端的实战了,需要搞dom,打开jq源代码,认真了解jq关于dom处理的每个方法怎么写的,为啥这么写。 3 其他的诸如ajax什么的参见上一条 帮你减轻负担: *市面上大部分的书都是参考资料不是实战指导,用不着天天抱着个参考资料死磕,除非你已经有其他语言的底子,多参与实战吧,github上有“todo项目” https://github.com/tastejs/todomvc ,自己独立做一次,你肯定就入门了。 *别对框架太认真,包括jq在内都不是必须的,他们只不过是学习资料而已。 |
65
jiyinyiyong 2014-01-23 09:45:27 +08:00
看看 CoffeeScript? http://read.douban.com/ebook/198648/
JS 本身不是严谨的语言, 语法比较杂, 用 CoffeeScript 这个子集会好一点, 结合任务做做具体的例子会比较好, 不要急着去理解 JS 具体的意思. 难道没有人和楼主说过 JS 其实是个大坑么? |
66
j 2014-01-23 09:50:08 +08:00
@jiyinyiyong 比起php什么的,js简直就是跳板了。
|
67
vivianalive 2014-01-23 10:08:56 +08:00
有一个建议是,在学javascrip的时候,千万千万不要碰jQuery...
|
68
Moods 2014-01-23 10:12:24 +08:00
各种库用多了,开始确实比较想不通,也没必要一定跟着某些书的思路走。
|
69
83f420984 OP @vivianalive 我师傅也跟我说过这样的话,所以目前的学习方法只学原生,jQuery暂时不碰它
|
70
jinwyp 2014-01-23 11:39:24 +08:00
请直接学angular, javascript 本身由于10天设计出来的语言,问题很多. 建议从框架入手.
而且现在是2014年了, 请直接从angular开始学. 或者是ember, 等. 然后在去学习什么DOM操作什么的 |
71
westup 2014-01-23 11:46:38 +08:00
和楼主一样,第一本js书是这本JavaScript DOM编程艺术,后来发现看错书了,里面基础知识讲得太少,《JavaScript高级程序设计》必须要买,但是这本书也有缺点,提到太多其他语言(java)了,java也不懂肿么办,只有慢慢啃了,我相信,花多点时间,一定有所成。
|
73
flynngao 2014-01-23 14:49:12 +08:00
@wity_lv 我说js是很蠢的语言是指,相对于其他传统高级语言,C,C++,java,js的限制非常的少,数据结构之间的转换非常简单,而且基本不用考虑语法和算法问题,弱类型也是这个意思
|
74
vellow 2014-01-23 16:41:08 +08:00
分享一下全无编程基础学JS的过程,
第1个月,看一套入门视频,对HTML,CSS,JS有个初步概念,练习 第2,3月,犀牛书(很无聊),W3School,中间断断续续,看见什么好玩就玩什么,HighCharts,bootstrap,jQuery,用框架可以很快做出炫酷的东西来,成就感会让人继续学下去。 第4月,正好选了个相关的毕业设计题目,做一个完整的静态网站。 ... 后来,研究JavaScript高级程序设计,编写高质量代码,高性能JavaScript,JavaScript设计模式这几本 ------ 总结一下学JS要循序渐进,每个阶段要看适合该阶段的书,理解是基于实践经验的 |
75
wity_lv 2014-01-23 21:48:19 +08:00
@flynngao 强类型/弱类型, 编译型/脚本型,各有优势没什么好讨论的,看个人喜好。
关于算法,主要使用js的场景很少会考虑的算法问题。javascript支持high-order function,做算法也非常优秀。 一个“平均阻尼”法的算法,找函数的不动点。 Lisp实现: https://github.com/lvjian700/sicp/blob/master/chapter-1/1.33_fixed-point.lisp (define tolerance 0.00001) (define (fixed-point f first-guess) (define (close-enough? v1 v2) (< (abs (- v1 v2)) tolerance)) (define (try guess) (newline) (display guess) (let ((next (f guess))) (if (close-enough? guess next) next (try next)))) (try first-guess)) Javascript实现: https://github.com/lvjian700/sicp/blob/master/chapter-1/fixed_point.js var toerance = 0.000001; function fixed_point (f, first_guess) { function close_enough (v1, v2) { var delta = Math.abs(v1 - v2); return delta < toerance; } function tryit (guess) { console.log(guess); var next = f(guess); if (close_enough(guess, next)) { return next; } tryit(next); } return tryit(first_guess); } 用它算一下 x^x = 1000 的一个根。 fixed_point(function(x) { return Math.log(1000)/Math.log(x) }, 3.0); |