zoukankan      html  css  js  c++  java
  • js 几个重要的特性

    背景:

    语法借鉴    java    

    函数借鉴    scheme

    原型继承借鉴    self

    正则表达式借鉴    Perl

    1.动态语言

    函数的定义和调用  形参与实参不需要一致

    形参可由 arguments 类数组获取 (形参传入时与其形成映射关系)

    变量之间无阻碍相互转换,不需要指定类型,(前一刻可能是 num ,可以立马变 str fn obj 。。)

    2.解释性语言、跨平台

    js代码运行前夕不需要编译,但是有个预编译过程(上下文环境、变量提升、形参实参统一化、函数声明提升)

    例子:

    function a(){ if(true){ function aa(){console.log('true')} }else{ function aa(){console.log('false')} } aa();}

    部分浏览器执行 a()  -  false  

    函数与变量都存在提升

    不需要先生成文件再转机器码运行,直接解释成0101跑起来

    3.单线程

    代码块之间不相互影响( 如两个 script  之间)

    之上而下运行,看一行执行一行,出现错误立马报错

    4.this指向

    根据 fn 调用场景,分为函数和方法(包括构造函数调用、call和apply的调用),this分别指向window(undefined)、obj(上下文)

    例子:

    var obj={a:function(){ console.log(this) } }

    obj.a()  -  obj

    var obj={a:function(){ return function(){console.log(this)} } }

    obj.a()()   -   window

    var obj={a:function(){ var that=this; return function(){console.log(that)} } }

    obj.a()()    -  obj

    5. 所有函数的方法 call  apply  bind

    都改变 this 指向 (上下文环境)

    call  apply  借用函数

    bind  返回函数体

    可以实现效果:任何函数可以调用任何对象的方法

    6.原型

    过于复杂,后续再议

  • 相关阅读:
    amoeba连接mysql--ERROR 2006 (HY000): MySQL server has gone away
    fd最大值和限制
    mysql ab主从复制出错及解决过程
    mysql复制知识整理
    MySQL权限
    客户端用plsql进行中文条件查询时无结果的解决办法
    ORACLE ASH/AWR
    总结:常用的Linux系统监控命令(2)
    讨论几种数据列Column的特性(上)
    Spring核心技术(五)——Spring中Bean的作用域
  • 原文地址:https://www.cnblogs.com/justSmile2/p/9756368.html
Copyright © 2011-2022 走看看