JS说古道今

JS说古道今

本文概要

讲述js的来源及重要的语法特性,包括数据类型、DOM、作用域等…(由于专业性比较强就不写诗扯淡了= =,我尽量写的有趣点吧

JS?JSP?JavaScript?JScript?

相信标题里的名词大家都听说过,首先把JSP拿出来丢到一边去,为什么呢?因为这货的大名是Java Server Pages,说白了,是一门技术框架,这是干什么用的呢?学过javaee的知道,我们是可以用java语言写网页的,对了,这个时候你就用到了JSP,行了,不说他,先跟大家讲一个故事,也算是给大家一个机会重新了解一下微软吧嘿嘿,win粉儿不要揍我 = 。=,说很久以前,一个叫比尔的大佬搞了个操作系统公司,叫微软,而克拉克创造了浏览器一个公司,叫网景。按道理他俩本来也不应改有什么交集,比尔开始是瞧不起网景的,一个做浏览器的嘛,有什么大不了的,哥哥我可是做操作系统的!但过了一段时间,比尔发现:卧槽这浏览器客户量真多啊!于是满脑子骚操作的他马上告诉手下:弄个浏览器出来,弄死网景!于是乎,IE就面世了,得意的比尔马上开始了他的第二步计划:IE绑定Windows出售,提供免费使用……于是,网景被搞死了(据说后来微软也是这么搞其他公司的,你知道WPS和Office吧…),那么为什么我要讲这个故事呢?因为js其实是两个人,一个叫小微,一个叫小景。这要从早期的网页说起,人们访问网页的时候,一般按一个按钮都需要很长时间的,因为一切表单验证都在服务器做!这样的体验很不好,于是为了解决这个问题,聪明的网景公司联合Sun公司开发出了一款脚本语言LiveScript,但当时听说JAVA挺火的,想一想犹豫了一下,干脆叫JavaScript吧!所以,JAVA和JavaScript的区别就像雷锋和雷峰塔的区别那么大吧=v=,新开发出来的JavaScript红遍大江南北,微软看着不舒服了,于是召集各路猿大侠论剑,很快就搞出了一个JScript(为了避免侵权,所以改名了),所以大公司啊,丢点节操也无所谓的~赚钱就行,当然后面还是有我们专业的委员会参照JavaScript制定了标准

数据类型,只说一点

js的数据类型和正常语言的差不了多少,大家就主要关注一下类型转换(主要是与boolean有关的转换),还有就是number已经没有整数小数之分了所以需要注意一下,这里主要说一点,我们知道==是不分类型判断而===是分类型判断的,这里大家要注意的是:如果你还是菜鸟,绝对不要用==,其一,==转换成基础类型在再判断,效率不如===,另外==会减小代码的可读性,最后就是如果学艺不精的话,==会产生一些副作用

Array.prototype.valueOf = function() {
  this[0]++;
  return this;
}
var x = [1, 2, 3];
x == 0;
console.log(x);

结果是什么?自己猜一下再试一下(prototype属于原型,会在后期讲解)

DOM和BOM

其实DOM属于html的东西,只不过在js里面才开始用,所以放在这里了,那么DOM是什么呢?他诞生于几十年前那场旷古决战,对,就微软耍流氓那次(导致了现在前端开发各种不兼容问题,所以,恨吧=v=),大家都搞了很多技术,为了更好地移植js语言,就搞了这个东西,当然后来他成神作了,界面动态变化什么的都离不开他,他其实是一棵树,由父亲节点有子结点当然也有数据啊属性啊什么的,等我去随便偷个图啊~

<html>

    <head>        
        <title>Sample Pagetitle>
    head>
    <body>
        <p>Hello World!p>   
    body>          

html>

像这个,变成DOM之后

JS说古道今_第1张图片

就变成了这样,都能看懂吧~因为以后动态修改页面什么的都需要操纵DOm所以这里稍微提一下,至于BOM,就是浏览器的一个东西,去看看如何获得当前浏览器窗口吧,大概就理解了(不理解应该也没问题,个人感觉这个概念不常用)

作用域&预加载

先说作用域:不带var的声明全局变量,在函数外面声明的是全局变量,函数里的是局部变量。咳咳…完了,其实说作用域主要想说预加载,大家看下面这行代码

var a = 0;
function f(){
  alert(a);
  var a= 1;
  alert(a);
}
f();

大家先猜一下结果,再看一下:

js代码开始执行的时候会判断作用域,比如说这里的a,首先他从上往下执行,看见a了,噫~a是个全局变量!过了一会儿,又看见了a:噫~a是个局部变量!然后后面的a把前面的a干掉了,所以当我们打印第一个a的时候,是undefined,第二个肯定正常了,另外作用域还大有搞头,会在以后的闭包里说明

结语

好了,就这样吧,也不知道会不会有人看,前期可能是枯燥的(连我自己都不想写= =!)等到后来涉及框架啊安全啊可能会有意思起来吧~还有这个md编辑器真心好用!呼,明天又要上班了,好困啊=_=大家晚安,如果有没提到的大家感觉很重要的可以在下面留言,就酱。

你可能感兴趣的:(程序生涯,web,web前端RE0,javascript,技术)