js学习笔记

  最近脑子一抽想学JS了,目的是非常现实的,为了解决www.9org.com 的平台上的教室申请提交问题。主要的想法是这样的:作为某个社团的打杂孩纸,我需要在每周一早晨8:00左右在久聚平台上登陆自己的账号密码,进入一个固定的教室申请的界面,然后填写十几份申请。填写每一份申请需要在教室申请的界面戳一个”新建申请“的按钮,进入一个新的网页,在新的页面中的指定位置填写一些时间,教室位置,申请名字,是否通知等等信息,然后戳提交申请的按钮。每周需要重复这样的机械劳动很多次导致我非常渴望能够写一个脚本解决问题(应该是写一个脚本吧其实水水的我连要写什么都不确定QAQ)。当然我现在还在学习JS的阶段并且毫无头绪,如果有亲爱的小天使们有想法的话非常欢迎戳我2333

  吐槽结束下面是正事啦!宝宝用的是 http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000 这个网址廖老师的教程来学习。之前有学过C/C++,所以学JS的重点应该就是完成上面的宏伟目标,非常非常功利QAQ可能的话会考虑一些C和JS的异同,从比较辨析的角度去学习吧。

一、快速入门部分

1.开发环境。宝宝现在还没有配环境,都是直接在教程中输入代码学习的【一条咸鱼

2.自动补';'(感觉略诡异的规则,解决方法大概就是从来不省略';'吧)

3.严格区分大小写(感觉是惯例?)

4.数据类型包括Number,字符串,布尔值

5.比较运算符包括==和===,其中==自动转换数据类型再比较,===要求数据类型一样才判是否相等,数据类型不同直接false。这样神奇的用法使得推荐只用===进行比较。同时神奇的是里面自带了NaN并且只能通过isNaN()这个函数来判断是否为NaN而不能用==/===。这里和C应该有挺明显的区别的,比如C里面从short->int->unsigned int->long这一条线我记得是在比较的时候有自动升级的效果(两边类型不同的时候自动把低级别数据类型的一边升级到高级别的数据类型然后比较),但是在JS里面只有Number一个数据类型所以少了浮点数啊各种整形啊的好多好多幺蛾子。但是C里面的0==false这条的结果应该是true的,然而JS里面0===false就会被恶毒的数据类型判断为false从而免不了天各一方的悲惨结局。

  其实我现在不能理解为什么要有===这个运算符,但是感觉它总归还是有用的吧。需要用===的地方应该就是==得到的结果和===得到的结果不同的地方,从而比较的双方有不同的数据类型。如果一边是Number一边是bool,那就是false==0//true 和true==1或1.0//true(其实1和1.0在JS里是完全一样的吧但是C中的感觉强迫我分开他们真是无奈啊);如果一边是bool一边是字符串,那就是false==‘0’//true 和true==‘1’//true;如果一边Number一边字符串,那就是扒开数字的引号吧。但是试了一下,'1'==1//true  '\'1\''==1//false大概是只能扒一层引号吧。从字符串角度来说还有'a'==97//false 97是a的ascii码,所以关于这个好像也没有什么好的结果。所以===有什么用么?反正我现在知道了要用===,并且小白的不知道为什么,总之你开心就好~

6.null和undefined,其中null表示空值,undefined表示未定义。大多数情况下用null,所以我好想吐个槽为什么不初始化呀这样就用不上undefined了啦

7.动态语言,变量本身类型不固定,可以把任意数据类型赋值给变量啦啦啦啦。这个严重不同于C,当然这样就不需要强制类型转换啦啦啦

8.数组没有任何错误。改变了数组自带length属性就真的改变了数组的大小,访问超出的元素时也会直接自动扩充数组,扩充部分为undefined(哎呀undefined好像还是挺有用哒)。天哪再也不用担心数组越界啦!

相比于C++,差异应该是挺明显的。我感觉比起数组,这个反而更像vector一些,但是又有push和pop还有unshift(头部添加元素)shift(删除首元素)反而像是双端队列,但是又有随机访问一样的索引访问。哎不管这个东西是什么了只要好用就好

9.对象,像是C++里的类。但是动态类型可以在定义之外的地方自由的添加或删除一个对象的属性。

10.循环,有for...in循环,可以把一个对象的所有属性依次循环出来。

二、函数部分

1.arguments.length自动表示传入参数的个数,一个函数可以传入任意个参数(所以参数表大概只是为了好玩和省事吧hhh),可以用arguments[i]自动拿出所有传入的参数。

  这里想到了类似C++的函数重载。C++为了重载写好多函数,而JS选择了同一个函数想怎么传参就怎么传参,再根据传入的参数来选择函数怎么运行,从需要完成的功能来看还是挺像的。

2.变量提升。大概就是像C++的汇编预编译什么的部分,来去把函数中的所有变量定义提到开头,当然提上来的只有名字和undefined,不包括本来的初始化。所以在前面用到了后面定义的变量并不会报错,只会得到奇诡的结果。这告诉我们请一定要把变量定义写在开头啊。

3.绑定到对象上的函数称为方法。这块总的思路上感觉是类似C++的


//Till map/reduce

//To Be Continued






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值