先学java还是先学js(Java学习JavaScript学习心得)
用Java也有段时间了,现在想想当时学这个的时候,也是挺辛苦的,所以成就感油然而生.刚开始学些基础的,Javaweb轻量级软件开发,当时作为新手而言看的<Head First Java(第二版·中文版)>这本书,在我觉得这本书还是不错的,没有基础的同学可以在逗逼的气氛中搞定基础语法、体会面向对象的思想,有编程基础的同学也会发现原来技术书也可以写成这样!厉害了...Java是目前最流行的编程语言之一——它可以用来编写Windows程序或者是Web应用,移动应用,网络程序,消费电子产品,机顶盒设备,它无处不在,下面就来说说我在学习的时候遇到的一些问题,简单谈谈在下的心得吧!也希望大家多指教了.
其实基础一些的还好.我想说说JavaScriptJavaScript 是脚本语言,是一种轻量级的编程语言,是可插入 HTML 页面的编程代码,插入 HTML 页面后,可由所有的现代浏览器执行。JavaScript 是与 HTML 和 CSS 结合运行在浏览器中,强大且富有表现力的语言。基于一个叫做 ECMAScript 的开放标准,JavaScript 快速的发展成为“网络的编程语言”。jQuery 所有的力量都来自于 JavaScript,所以无需赘言,它是一门值得学习的重要语言。拥有 JavaScript 的基础知识,会对理解,构建和调试代码很有帮助。
下面还是列举一些关于这方面的问题吧,看过之后大家应该也就清楚了
第一个
{a:1}.a
报错,错误Uncaught SyntaxError: Unexpected token .
。
解决:
({a:1}.a) // 或({a:1}).a
对象字面值不能正确解析
第二个
123.toFixed(2)
报错,错误Uncaught SyntaxError: Unexpected token ILLEGAL
解决:
// 以下两种都可以,但完全不推荐
123..toFixed(2)(123).toFixed(2) // >> "123.00"
123 .toFixed(2)
数字的点操作符
第三个.
尝试解释下连等赋值的过程。下面的代码为什么是这样的输出?
var b = a;
a.x= a = {n:2};
console.log(a.x);// --> undefined var a = {n:1};
console.log(b.x);// --> {n:2}
连等赋值问题
第四个
下面的代码返回什么,为什么?
var temp = {
x:40,
foo:function() {
var x =10;var x =20;
returnthis.x;
}
};
(temp.foo, temp.foo)(); // 20,而不是40
逗号操作符
第五个
parseInt传入数字时为什么有以下输出?
parseInt(0.000008) // >> 0
parseInt(0.0000008) // >> 8
parseInt传入数字
也不说那么多了,简单说这几个吧,下面给大家分析一下吧
第一个
声明对象字面值时,语句开头不应该用
{
,因为js解释器会认为这是语句块(block
)的开始。同理,类似问题
{ name: "mc", id: 1 }
会报错Uncaught SyntaxError: Unexpected token :
也是这个道理。({ name: "mc", id: 1 })
即可正确解析。但稍注意下,{name: "mc"}
是不会报错的,它等同于name: "mc"
,并返回一个字符串"mc"
。第二个
很简单,js解释器会把数字后的
.
当做小数点而不是点操作符。第三个
我们可以先尝试交换下连等赋值顺序(
a = a.x = {n: 2};
),可以发现输出不变,即顺序不影响结果。那么现在来解释对象连等赋值的问题:按照es5规范,题中连等赋值等价于
a.x = (a = {n: 2});
,按优先获取左引用(lref
),然后获取右引用(rref
)的顺序,a.x
和a
中的a都指向了{n: 1}
。至此,至关重要或者说最迷惑的一步明确。(a = {n: 2})
执行完成后,变量a
指向{n: 2}
,并返回{n: 2}
;接着执行a.x = {n: 2}
,这里的a
就是b
(指向{n: 1}
),所以b.x
就指向了{n: 2}
。第四个
逗号操作符会从左到右计算它的操作数,返回最后一个操作数的值。所以
(temp.foo, temp.foo)();
等价于var fun = temp.foo; fun();
,fun
调用时this
指向window
,所以返回20。第五个
parseInt(arg)
时会调用arg.toString()
。
(0.000008).toString() // "0.000008"
(0.0000008).toString() // "8e-7"
到此今天的谈论就结束了,虽然说文章不是很详细,但也希望可以帮到大家
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com