目前在自学JavaScript,感觉非常的吃力,是不是我的方法不对?

2014-01-22 12:03:02 +08:00
 83f420984
我自己的学习方法是,看JavaScript DOM编程艺术,第一章节我研究了近3个星期,始终不明白它里面的讲的对象与数组与代码表示的意思,然后实现是看不下去了;

转而去看妙味课堂Javascript视频教程,里面前5节就是JS学前预热课程,这5节课程重复看了10遍以上,不停地练习视频里的例子,自己已经可以写点简单的JS效果了;

然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑

现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等
23892 次点击
所在节点    程序员
77 条回复
xcatliu
2014-01-22 23:19:46 +08:00
如果致力向前端发展,这儿有个前端知识结构,明确大的行进方向
https://github.com/JacksonTian/fks
giumo
2014-01-22 23:31:01 +08:00
寒假刚开始在Codecademy上面学Javascript现在学到对象 觉得挺好上手的 在学校有C++的基础什么觉得相比之下简单了很多http://www.codecademy.com/
coetzee
2014-01-23 08:16:08 +08:00
@MingZhe 哥们儿,我觉得你说的很有道理,我就一直这么做的
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在内都不是必须的,他们只不过是学习资料而已。
jiyinyiyong
2014-01-23 09:45:27 +08:00
看看 CoffeeScript? http://read.douban.com/ebook/198648/
JS 本身不是严谨的语言, 语法比较杂, 用 CoffeeScript 这个子集会好一点,
结合任务做做具体的例子会比较好, 不要急着去理解 JS 具体的意思.
难道没有人和楼主说过 JS 其实是个大坑么?
j
2014-01-23 09:50:08 +08:00
@jiyinyiyong 比起php什么的,js简直就是跳板了。
vivianalive
2014-01-23 10:08:56 +08:00
有一个建议是,在学javascrip的时候,千万千万不要碰jQuery...
Moods
2014-01-23 10:12:24 +08:00
各种库用多了,开始确实比较想不通,也没必要一定跟着某些书的思路走。
83f420984
2014-01-23 11:28:12 +08:00
@vivianalive 我师傅也跟我说过这样的话,所以目前的学习方法只学原生,jQuery暂时不碰它
jinwyp
2014-01-23 11:39:24 +08:00
请直接学angular, javascript 本身由于10天设计出来的语言,问题很多. 建议从框架入手.
而且现在是2014年了, 请直接从angular开始学. 或者是ember, 等. 然后在去学习什么DOM操作什么的
westup
2014-01-23 11:46:38 +08:00
和楼主一样,第一本js书是这本JavaScript DOM编程艺术,后来发现看错书了,里面基础知识讲得太少,《JavaScript高级程序设计》必须要买,但是这本书也有缺点,提到太多其他语言(java)了,java也不懂肿么办,只有慢慢啃了,我相信,花多点时间,一定有所成。
83f420984
2014-01-23 13:29:30 +08:00
@westup
@jinwyp 谢谢
flynngao
2014-01-23 14:49:12 +08:00
@wity_lv 我说js是很蠢的语言是指,相对于其他传统高级语言,C,C++,java,js的限制非常的少,数据结构之间的转换非常简单,而且基本不用考虑语法和算法问题,弱类型也是这个意思
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要循序渐进,每个阶段要看适合该阶段的书,理解是基于实践经验的
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);
83f420984
2014-01-23 21:51:54 +08:00
@vellow
flynngao
2014-01-23 22:46:59 +08:00
@wity_lv 为你认真态度点个赞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/97962

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX