York's Blog

JS的数据

JavaScript的历史

1
2
3
4
5
6
7
8
9
10
11
12
Branden Eich JS之夫 擅长函数式 第一次叫Mocha,第二次叫LiveScript,最终叫JavaScript ,表面看起来像Java,只花了十天时间,1995年圣诞节左右发布
发布的时候 Unicode还没有发布,所以有编码BUG
1996年网景开源Firefox,并且向ECMA(欧洲计算机制造协会)申报标准,行业标准叫做ECMAScript
IE5.5 微软推出JS发请求
2004年Gmail,使用微软的技术发明网页上的程序,开启JS真正的编程语言,前端(Front-end)以js为生也出现了
2010年左右中国知道前端开发 ,ECMAScript3 不行1.全是全局变量(没有模块化)2.标准库不行(内置代码少)
ECMAScript 5步子太小了
Rails社区 Ruby-->coffee script(JS改良版),添加了类,箭头函数,opional chain语法
ECMAScript 6步子合适 增加了60个东西 ,抄袭了coffee script,集大家之所长,js终于变成现代编程语言
js之父评价,JS原创之处并不优秀,优秀之处并非原创
JS每年更新一次,ES7更新2个特性,ES8更新了10个特性,Wepback打包ES next
我们学的是从ES3开始-->ES5-->ES6,没有发布的特性就已经被使用了,没有规范的Babel使用转义
opional chain语法
1
2
3
4
5
console.log(obj?.a?.b?.c?.name)<==>
if(obj.a !== undefined&&obj.a.b !==undefined&&obj.a.b.c !== undefined&&obj.a.b.c.name !== undefined)}
{
console.log(obj.a.b.c.name)
}

js数据类型

有7种数据类型

  1. 数字(number)
    十进制 1.23e2==>1.23*10^2 ,二进制 0b开头的 八进制0开头 011==>9 十六进制0x开头
  2. 字符串(string)
    “你好” ‘你好’, ‘’ “”空字符串length为0,’ ‘ “ “空格字符串length为1,回车是一个字符,length=1
    转义 var a= “‘“==>’\’’(a赋值单引号),\就是转义符 \n–>回车 \t–>制表符(tab键) \–>斜杠==>length为1
    多行字符串(不是字符串里有回车)

    1
    2
    3
    4
    5
    6
    var s='12356\   \后面不能有空格,坑人语法
    67890'
    var s2='12356’+ 这个比较好
    ‘67890'
    var s3='12356
    67890'会报错

    ES6推出
    var s4=反引号开头可以写多行字符串反引号结尾,里面不能有空格

  3. 布尔(boolean)
    数学家Boolean发明的逻辑学(下雨上课没带伞,得了肺病去世了)
    布尔值 true(真) false(假) &&与运算 ||或运算
    真值表 a&&b 只有a和b都是真,结果才是真,其他都是假,a||b 只有a和b都是假,结果才是假,其他都是真
  4. symbol(符号)
  5. null 空值,意思什么也没有 js原创
  6. undefined空值,意思什么也没有 js原创
    null和undefined区别:
    1. 变量没有赋值–>undefined
    2. 有一个对象object,现在不想赋值,那么推荐就给个null(var obj=null),有一个非对像,不想给值,推荐初始化undefined
  7. 对象(object)
    array(数组),function(函数)属于object,哈希(hash) ,哈希表{“key”:”value”}
    其他6个类型都叫基本类型(简单类型),object叫复杂类型。是由简单类型组成的
    1
    2
    3
    4
    var name='york'     语法是var person = {'name':'frank'     
    var age=24 ==> 'age=24',
    var gender='male' 'gender':'male'}
    单引号可以省略,冒号前边都是字符串,person['name']==>person.name(特例) 单引号不能省略

知识点

1
2
3
var name='fuck', person[name]==>person['fuck']
1.delete person['name'],person.name //undefined,'name' in person\false 把key和value都删了
2.person.name=undefined,'name' in person //true 只把value删了
  1. for(var key in person) 遍历对象,key打印出key,person[key]打印出value
  2. {self=person}可以包含自己 person.self.self.self.self.name 也是可以成立的
  3. 对象里{可以包含 字符串:undefined||null||布尔||对象}
  4. key可以是空字符串,{‘’:’York’}。引用person[‘’]
  5. 标识符原则(变量名):1.变量第一个字符不能是数字,字符串可以 2.中间不能是空格3.必须是合法字符
    {9a:’york’} 如果key不加引号,那么必须按照标识符原则(变量名),9a和a b必须加引号,要不然会报错
  6. 变量的类型 typeof 识别变量的类型
    t={} ;typeof t;”object”
    BUG: 1.typeof null ;”object” 2.typeof fn; “function”
  7. 我想知道变量 a 是否已经声明过(值为 undefined 不代表没有声明过),应该用 if (‘a’ in window) { … }
Proudly published with Hexo