「编程」后台编程语言互相争执,为何前端公认JavaScript?( 二 )


  • === , 恒等于 , 比较的是值和类型均相等 。
  • ②null与未定义比较
    同样的道理 , 它们的值相等 , 都为null , 但是类型不一样 , 所以不恒等于 。
    4三目运算符也就是Java中的三元运算符 。
    二、js中的函数1函数定义js中的函数其实也就是Java中的方法 。
    ①Java中的方法
    做一个回顾 , Java方法格式:修饰符+返回值+方法名+(参数列表)+{方法体;
    其中参数列表中要明确数据类型 。
    ②js中的函数
    js函数格式:fuction+方法名(参数列表){;
    js中不仅没有修饰符 , 连返回值都没有 , 并且参数列表的数据类型不用明确 。
    由此可以看出:js的语法相对于Java而言较为随意 , 不像Java那么严谨 , 但确实简便了很多 , 方便学习 。
    2实参和形参
    • 实参:调用函数时的参数(传入的具体数值) 。
    • 形参:定义函数时的参数(自定义的变量) 。
    Java中形参与实参要明确保证一致(数量、数据类型都要保证一致)
    但是js中可以不一致 , 我们逐一分析:
    ①实参与形参数量不一致
    实参与形参的关系相当于将实参的值赋给形参 。
    当实参比形参要少时:a=1;b=2 , 但是c未定义 。
    在js中任何数据与未定义的变量相加都是NaN 。
    当实参和形参一样或者多时 , 结果没有影响 , 多的实参不参与运算即可 。
    ②形参和方法体中的变量不一致
    如果方法体中的变量要少 , 有几个就用几个 。
    如果方法体中的变量要多 , 多了一个形参中没有的变量d , 则无法运行 。
    这个Java中倒是有一定的相似之处 。
    3参数arguments事实上在js中有一个专门的数组arguments , 用来接收调用时的实际参数:
    js中的数组是可变的 , 所以可以使用这种方式来接受 , 当然也可以使用for循环来处理 。
    不过要注意的是 , js中可没有增强for循环 。
    老实说 , 对于arguments这个概念 , 其实也就相当于是实际参数 , 知道在js中有它的存在即可 。
    我个人对于实参和形参的理解 , 就是将实参赋值给形参再参与运算 , 这样方便记忆也好理解 。
    4返回值和方法重载
    ①返回值
    js在定义函数时是不用说明返回值的 , 如果有返回值 , 直接return即可 。
    ②方法(函数)重载
    在Java中是有方法重载(同名不同参)
    但是在js中是没有方法重载的 。
    这也好理解 , 在Java中参数类型不同 , 个数不同即代表不同的参数 。
    但是在js中参数类型都没有明确定义 , 所以也没法区分参数不同 , 并且实参个数与形参个数没有关系 。
    其中 , js代码是从上到下执行的 , 同名函数 , 后面的函数会覆盖前面的函数 。
    5局部变量和全局变量
    ①函数内测试局部变量
    函数内部 , 局部变量和全局变量都可以访问 。
    ②函数外测试全局变量
    在函数外部 , 局部变量是不能被访问的 , 但是全局变量可以访问 。
    ③另一个script标签
    和函数外部一样的道理 , 通过②③我们可以得出结论:变量c是一个全局变量 。
    事实上 , 当局部变量省略了var的时候 , 会变成全局变量 。
    为什么会这样?画图分析:
    也就是说实际上变量c省略了var , 就相当于默认在外部定义了var c , 再在函数内赋值 。
    当然其前提是该变量没有在函数内被定义 , 如果变量c在函数内定义过了 , 那它就是个局部变量 。


    推荐阅读