
正文
javascript学习指南,JavaScript教程
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如果我要学习JavaScript,需要先学习什么?
这个问题对于不同人的答案是不一样的。对于编程老手来说,学习JavaScript可能只需要看看reference、看看一些脚本库的源码,有疑难再上上stackoverflow或知乎之类的地方就可以了。
学习Javascript,首先它和Java的关系不大,所以不需要Java基础也可以,但至少要有html基础,否则即使学习了,也不知道怎么使用更好,更有效。学习html比较容易,如果要求不太高,之后可以适当看一下css和div。
需要恒心。
JS不是那么好学的,本身语言设计的时候就有很多不可思议的地方,像self,像C,像Java,要理解它的编程思想并不容易,闭包,原型神马的不容易。
而且不同浏览器引擎的实现不一,会导致很多语言外要注意的问题,特别是IE。用的时候会有很多雷,时不时中个雷是很正常的。所以,学习需要恒心去克服。当然你如果没有编程基础,那些雷对你来说可能不是雷。
需要看好书。
《JavaScript权威指南》,书如其名,的确是权威。当然,这书很厚,而且也不是所有地方都讲得好的(对象类型那块我就被坑了,直到看了愚公的博文才醒悟过来)。
但是这书起码让你对JS的方方面面有个完整的了解。《Pro JavaScript》也是一本好书。《the good parts of JavaScript》是一本很重要的书。一本坏书会教你很多不好的编程习惯,包括不写分号,乱搞全局变量等等傻逼行为。
相关问答
Q1: 想自学javascript需要首先学习哪些方面的知识?
要系统的学习JavaScript要掌握以下知识:首先掌握HTML和CSS,这是基础也是学习JavaScript的时候需要用到的知识。 千锋教育就有线上免费JavaScript线上公开课。
其次,刚开始入门不建议看《JavaScript权威指南》和《JavaScript高级程序设计》这些书籍。并非这些书籍不好,相反这些书籍是公认的好书!主要是因为这些书籍内容太多太厚了,很容易让你走上‘从入门到放弃’道路!对于初学者而言,多而全意味着主次难分,无法取舍;此时你想把JavaScript学好,只能全学,然而很多内容对于初学者而言很难理解!第三,系统地学习JavaScript应根据知识点的难易及内在联系划分阶段:初级-进阶-高级,这样才能更好地学习JavaScript。最后 最好有内行人指导,什么内容常用,什么内容重点掌握等等。如果身边没有这样的人,可以选择报班学习。千锋教育目前在18个城市拥有22个校区,年培养优质人才20000余人,与国内20000余家企业建立人才输送合作关系,院校合作超600所
Q2: JS位运算符
之前对js的一些涉及到二进制的运算符一直似懂非懂,看到了就一脸懵逼,还得去控制台算一下。然后最近看算法的时候又看到了这个运算符,这里就简单介绍一下学习这些位运算符的过程。
注意: 以下运算均不涉及到小数。
先说这句话是什么意思。左移位是二进制的一种运算,就是在不改变二进制数值32位长度的前提下,将每位的数字都向左移动,左边移出去的直接丢弃,右边空出来的位置用0填充。无符号就是保持符号位不变,即本来是正数,移位后一样为正数。
这里以 7 2 为例。
首先将7转为二进制是 0000 0000 0000 0000 0000 0000 0000 0111 .
然后对其向左移两位.
得到值为 0000 0000 0000 0000 0000 0000 0001 1100 .
转换为十进制为 28.即 7 2 = 28 。
然后我们对以上的运算过程做一个处理,将这些二进制转换为我们熟悉的十进制。
对移位后的算式进行合并项可得到 2^4 + 2^3 + 2^2 = (2^2 + 2^1 + 2^0) * 2^2 ,即 2^4 + 2^3 + 2^2 = (2^2 + 2^1 + 2^0) * 2^2 = 7 * 2^2 。由此我们可得出 7 2 = 7 * 2^2 = 28 。
我们通过计算几个简单的左移位运算,与标准答案进行比较,验证一下这个结论。
在控制台中以上几个算式的结果为
答案完全一致。说明我们的结论是正确的。当然这个结论 仅限于那些二进制移位不会左移移出的数字的简单运算 。当我们遇到一些简单的可以口算的左移位运算时就可以使用这个结论快速得到结果,如果对于 99999 66 这种较复杂的运算你也用这个结论计算,也没有人会介意。
下面我们看一下负数的左移位运算。以 -66 2 为例。
首先,我们先复习一下负数如何转换为二进制。
负数转换为二进制的步骤有三:
然后对其向左移两位.
得到值为 1111 1111 1111 1111 1111 1110 1111 1000 .然后我们将其转换成十进制。
转换为十进制为 -264.即 -66 2 = -264 。
刚刚我们计算 -66 的二进制得到的是 1111 1111 1111 1111 1111 1111 1011 1110 。我们在控制台验证一下我们得到的这个二进制。
我们比较一下下面几个算式。
是的没错,进行无符号左移位运算时,当两个数的绝对值相等时,其相同位数的移位的绝对值一定相等。
这里以 666 3 为例。
首先将666转换为二进制是 0000 0000 0000 0000 0000 0010 1001 1010 。
然后对其向右移三位。
得到值为 0000 0000 0000 0000 0000 0000 0101 0011 .
转换为十进制为 83.即 666 3 = 83 。
然后我们对以上的运算过程做一个处理,将这些二进制转换为我们熟悉的十进制。
这个规律好像不太好总结?
这里以 -666 3 为例。
因为是有符号的运算,所以这里不再适用上一小节说的js的特殊处理。先将-666转换为二进制。
即-666的二进制形式为 1111 1111 1111 1111 1111 1101 0110 0110 ,然后对其进行有符号右移位运算
移位后得到的值为 1111 1111 1111 1111 1111 1111 1010 1100 ,是一个负值,我们将其转成十进制。
我们对此结果进行验证。
可见,我们的运算是完全正确的。
这里我们以 666 3 为例。
首先将666转换为二进制是 0000 0000 0000 0000 0000 0010 1001 1010 。
然后对其向右移三位。
得到值为 0000 0000 0000 0000 0000 0000 0101 0011 .
转换为十进制为 83.即 666 3 = 83 。
这里以 -666 3 为例。
因为是有符号的运算,所以这里不再适用上一小节说的js的特殊处理。先将-666转换为二进制。
即-666的二进制形式为 1111 1111 1111 1111 1111 1101 0110 0110 ,然后对其进行有符号右移位运算
移位后得到的值为 0001 1111 1111 1111 1111 1111 1010 1100 ,转成十进制为536870828。
是不是超级大。因为是无符号右移位运算,所以在左边空出部分不论正负都会填充0.
我们对此结果进行验证。
可见,我们的运算是完全正确的。
注意:因为对负数进行无符号右移位运算时,所得结果很大,所以在使用过程中需要格外注意。
疑问:左移位和右移位根本都是只对位置进行了移动,那么对于 x1 k = y1 和 y2 k = x2 中的 x1 等于 x2 , y1 等于 y2 吗?
不一定。因为我们不能确保移动过程中被丢弃的值均为0。但凡有一个1被丢弃,就不会相等。而如果被丢弃的都是0,那么 x1 === x2 y1 === y2 。如下图所示。
这里以 66 33 为例。
首先将两个数转换为二进制是 0000 0000 0000 0000 0000 0000 0100 0010 和 0000 0000 0000 0000 0000 0000 0010 0001 。
然后对其进行与运算。
得出结果为 0.
负数的与运算与正数并无区别,不做讨论。
这里以 66 | 66 为例。
首先将两个数转换为二进制是 0000 0000 0000 0000 0000 0000 0100 0010 和 0000 0000 0000 0000 0000 0000 0100 0010 。
然后对其进行与运算。
得出结果为 66.
负数的与运算与正数并无区别,不做讨论。
这里以 66 ^ 66 为例。
首先将两个数转换为二进制是 0000 0000 0000 0000 0000 0000 0100 0010 和 0000 0000 0000 0000 0000 0000 0100 0010 。
然后对其进行与运算。
得出结果为 0.
负数的与运算与正数并无区别,不做讨论。
这里以 ~66 为例。
首先将其转换为二进制是 0000 0000 0000 0000 0000 0000 0100 0010 。
然后对其进行与运算。
将结果( 1111 1111 1111 1111 1111 1111 1011 1101 )转换为十进制
得出结果为 -67.
这里我们再我看几个例子。
从中我们可以看出, 位非操作就是对数字加一,然后取负 。我们可以写个简单的判断方法来验证。
位运算符运算结果非常有趣,在平时可以多加应用,但是一定要注意可能产生大数的预算,避免产生不必要的BUG。
这篇文章只是做了一个简单的介绍。后面有空了会做一下在实际开发中的应用,虽然我可能很久都遇不到。
JavaScript学习指南:JS入门教程
Q3: 学javascript需要什么基础
Javasctipt简称Js,学习Js之前建议你先学习一下HTML+CSS,因为Javascript的基本操作是控制html的标签以及css的属性,实现各式各样的动态功能。千锋教育就有线上免费JavaScript线上公开课。
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。学习Javascript给大家推荐几本书,入门书籍《Javascript dom编程艺术》和内容全面点的有《Javascript高级程序设计》。看完这些,你的Js基础就学的差不多了再就是学习Js框架,例如vue.Js,react,angular.Js等。如果想了解Javascript更多相关知识,建议到千锋教育了解一下。千锋教育目前在18个城市拥有22个校区,年培养优质人才20000余人,与国内20000余家企业建立人才输送合作关系,院校合作超600所。






