一个仅了解python的人眼中的javascript是怎样的

2019-05-16  本文已影响0人  何赛艾慕

大致摸清了前端三根支柱的基本架构之后,终于扔下了两门声明式语言开始认真的学习一下js,从一个只学过c,java,c#语法和稍微熟悉python的编程小白眼中看,js还是稍微有些不一样的。

一. var/let/const

说不同之前,还是简单说一点相同的。都是动态语言的话,自然也不需要声明类型了,然而javascript中所有的变量常量前都需要加一个“var”声明,嗯还是感觉有些奇怪的。

var a='a';
var a;

同时,js中是允许不为变量赋予初值的,当然这个特性很多语言也有。
随着ES6推出,javascript又出了新的关键字“let”和“const”,同时还有了些许规定,比如“let”只是用来声明变量的,“const”的限制就要多很多,比如:

  1. const一旦声明是不可以修改的,也就是const是用来声明常量的,当然,当const用来声明复合结构的变量时其内部元素是允许修改的。

  2. const一旦声明必须赋值如下是不允许的

    const a;
    

const与其他两个是很好区分的,但是"let"和“var”就有些让人疑惑了,先看一些典型的用法区分:

  1. let对同一变量是不能重复声明的,而var可以:

     let a = 12;
     let a = 14;
    

上述代码是错误的,但是把“let”换成“var”则是可以的。

  1. 由于ES6新增了块作用域这一概念,而早就存在的var是跨块作用域工作的,如:

        {
     var a = 1;
     let b = 2;
     const c = 3;
    
     console.log(a); // 1
     console.log(b); // 2
     console.log(c); // 3
     }
    
     console.log(a); // 1
     // console.log(b); // 报错
     // console.log(c); // 报错
    
  2. 变量提升,放例子:

     console.log(a);
     let a = 10;//报错
    
     console.log(b);
     var b = 10;//正确
    

二. null/undefined

在js中有两种特殊的类型,null和undefined,两者都是表示不存在,区分这两个类型的话有一句很不错的总结:“null是给开发者使用的,而undefined是留给javascript自己用的”,因此开发人员应该少使用undefined。如:

let tmp;//代表该变量隐含值是“undefined”
const tmp_nu = null;//代表我们为tmp_nu设置初值为null
tmp = 1;//tmp此时有值了
tmp = undefined;//这样的方式是不推荐的
tmp_nu = 1;//这样的方式是可以接受的

三 对象

没想到呀,js对象居然是由键值组成的,这里不多说了,可能我还学的太少吧,还有一些方法,诸如delete ##(某个对象中的属性),感觉和sql这种声明式语言很像。
同时JS对象是可以带拖尾逗号的,这再JSON中是会报错的,JS对象和JSON看来还是有些许的不同的。

当然不仅仅是前面提到的这三点,只是介绍的这几点我感觉稍微不容易理解,在此写下一些自己查阅资料后的总结。

上一篇下一篇

猜你喜欢

热点阅读