js与java的一些区别

       ​本文需要5分钟左右阅读完成,建议收藏以后阅读,里面都是干货,可以亲自试验一下,如果觉得好用可以帮忙点赞转发一下让更多人看到,谢谢!交流学习java大数据可以加群460570824。

js的语法比java简单,但是我总感觉js代码看的很吃力,学的也很郁闷。现在买了本javascript权威指南,打算从头学起。这里就顺便当做笔记了。

程序设计首先得搞明白数据类型。js中有数字、布尔值、字符串、函数、对象、数组、null、undefined这几种类型。

关于数字:

js的数字并不区别整型还是浮点型,js中所有数字都是浮点型表示,可以认为是其他语言中常用的double型。另外js能识别十六进制和八进制的直接量。如0xff(0x开头为十六进制),0377(0开头为八进制数,但是最好不要这么蛋疼的用)。通常咱无论整数还是浮点数都直接在js中用就ok。js还支持指数计数法表示的浮点型直接量,如6.02e23//e23就是10的23次方。数字除了支持—、+、*、/,js还有很多算数函数保存在Math对象中。

特殊的数值有Infinity无穷大,负无穷大则是-Infinity,还有NaN,意为非数值。可以用一个专门的函数isNaN()来检测这个值。还有isInfinity();

关于字符串:

js支持Unicode字符,注意js没有char类型,所有字符都是字符串。用""或者''括起来。如果字符串中包含"或者',注意使用\转义。js字符串的内部特性之一就是支持+连接字符串。字符串有length属性,还有charAt()方法。还有subString(start,end)方法,indexOf('')方法。

数字转换成字符串:

当数字与字符串做+运算时,数字会转换成字符串。如100+”万"结果就是"100万"。由此可以得出一个将数字转化成字符串的简便方法,如var n=100; n=n+'';则n就转化成了字符串。''就是一个空字符串。其他的显式转换可以使用String(number)方法。还可以使用number.toString()方法,这个得是Number对象(似乎数字就是Number对象),该方法有参数,用来如2、8、16,表进制。还可以调用toFixed()方法格式化显示数字。

字符串转换成数字:

当字符串用于数字环境中时,它会自动转换成数字。比如var n= '2' * '33'。则n的值为数字66。利用这个特点,将字符串转数字的简便方法就是var s='55';s=s-0;则s就变成了数字55。切记如果是给字符串+0,那么这个运算过程就是字符串连接,相当于+'0'。

要允许更灵活的转换,可以使用parseInt()和parseFloat()。具体用法见书本p38.

布尔值:

没什么好说的,true和false。关于布尔值的转换,往往是自动转换。用于数字环境,true为1,false为0。用于字符串环境,则true为'true',false为'false'。值得注意的是,如果一个数字用于布尔值环境,那么如果该数字是0或者NaN,它就转成false,否则为true。而如果是字符串用于布尔值环境,则空字符串为false,非空为true。空值和未定义的值也会被转成false,而任何非空对象、数组、或函数都转换成true。

如果想显式转换,使用Boolean(x)函数。还有一种简便方法是!!运算符。不解释。

函数:

通常的定义方式为function square(x){

returnx*x;

}

得有个function关键字。有一点必须特别强调,在js中函数是真正的数值,它可以被存储在变量、数组、对象中,而且函数还可以作为参数传递给其他函数。当函数被赋值给某个对象的属性时,那么就等于该对象有了一个对应属性名的方法。

关于方法与函数的区别,我自己粗陋的理解为类外面的叫函数,类里的叫方法。所以java没有函数只有方法,因为java一切都在类里。而C和C++就有函数。

函数也可以有直接量,如:

var square=function(x){return x*x;}

这个特性比较重要。

还有一种蛋疼定义函数法:

var square =newFunction{"x","returnx*x"};//火星人喜欢这么用,地球人忘了它吧

对象:

js中的对象可以作为关联数组使用。如果采用这种方式,那么访问对象的属性就要采取不同的语法。比如image.width,此时可以用image["width"]。

对象也有直接量,比如:

var point = {

x:2.3,y:-1.2};对象直接量也可以嵌套。最后要说明的是对象直接量使用的属性值不必是常量,它可以是任意js表达式。而且对象直接量中的属性名可以是字符串而不是标识符。哈哈这不就是json格式吗?

对象转换:

当非空对象用于布尔环境时,它自动转换成true。当对象用于字符串环境,js会调用该对象的toString()方法,并且使用该函数的返回值。当对象用于数字环境,js首先调用该对象的valueOf()方法。如果该方法返回一个基本类型的值,则这个值会被使用。然而大多数情况下valueOf()返回的是对象自己,故js首先使用toString(),然后valueOf()。

数组:

js的数组可以存放任意js类型。包括其他数组、对象或者函数的引用。关联数组与常规数组是有区别的,常规数组用数字下标,关联数组则用字符串作下标。由于js是非类型语言,故数组中的元素类型不必一致。

数组声明:var arr= new Array();然后可以单独为每个元素赋值。也可以在声明时赋值:new Array(1,'ok',3,true,{x:1,y:4});

js数组感觉就是java中数组与Arraylist的结合体。兼具两者优点。

如果只向Array()构造函数传递一个参数,那么该参数是指定数组的长度。

数组也有直接量,比如:

var array =[1.2,'javascript',true,{x:1,y:2}];

数组亦可嵌套:

varmatrix=[[1,2,3],[4,5,6],[7,8,9]];虽然js不支持多维数组,但是这么一嵌套,就成了多维数组。而且js中数组直接量的元素不必仅限于常量,它可以是任意表达式:

var base=3;

var table=[base,base+1,base+2];

甚至你可以在数组中存放未定义的元素,比如var unkown=[1,,5];//2号元素就是未定义的

这么宽松的语法正是js令我头痛之处啊,郁闷。当然这也是js强大之处。

null:

没啥说的,当它处于bool环境时它被转换成false,当用于数字环境时它被转换成0;当用于字符串环境,它被转换成'null'。

undefined:

js偶尔会用一下这个。在使用了一个并未声明的变量时,或者使用了已经声明但是没有赋值的变量时,又或者使用了一个并不存在的对象属性是,返回的就是undefined。注意它并不等同于null。但是==运算符却将两者看做相等。如果你想区分null和undefined,可以使用===运算符和typeof运算符。

undefined还有一点与null不同,null是js的保留字,而undefined不是。它是js的一个全局变量,它的初始值是undefined。

当用于布尔环境,false。用于数字环境,NaN。用于字符串环境,'undefined'。

js中也有Date对象。还支持正则表达式,RegExp对象,它支持直接量,一对斜线/这是正则表达式/之间的文本就是一个正则表达式直接量。js也有Error对象。

详细的类型转换对照表可以参考书本P47。

看到js的语法是如此的宽松,你是否想到了js代码的各种稀奇古怪的写法了呢?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,204评论 0 4
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,628评论 0 6
  • 第三章 类型、值和变量 1、存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象,它只是偶尔用来区分字符串值...
    坤少卡卡阅读 621评论 0 1
  • 她说我是从污水沟里抱来的 提起老屋,不可逃避的一处就是奶奶胡同头前有一条污水沟,那可不是普通的小水沟...
    李baby阅读 407评论 4 3
  • 小时候我喜欢涂涂画画对着漫画书里的图片模仿经常会为自己的作品充满自豪 大一点的时候我喜欢收集黏贴纸还有抄写自己喜欢...
    王小芳_DISC项目主理人阅读 387评论 0 0