zoukankan      html  css  js  c++  java
  • JavaScript学习(一)——基础知识查漏补缺

    标签script

    我们知道,html要使用js就要使用<script>标签。 
    两种方式: 
    一是直接在<script>这里</script>写入代码。 
    二是在别的文件写好js代码,然后script标签的src属性引入进来。

     

    script其实有6个属性(全都是可选):

    1. src:包含要执行代码的外部文件;
    2. language:现在已废弃;
    3. type:表示编写代码使用的脚本语言的内容类型;
    4. charset:指定src引入代码的字符集;
    5. async:表示应该立即下载脚本;
    6. defer:表示脚本可以延迟到文档完全被解析和显示后再执行。

      type的解释也说明了一个问题,<script></script>中间的代码不必需是js代码。如果不声明,则默认为text/javascript,此时代码按照js的规则解析。如果声明了其他的不可识别的类型,则它和其中的内容会被忽略掉。 
      例如: 
      <script type='text/html' id="tpl"></script> 
      <script type='text/foo-template' id="foo-tpl"></script> 
      有些模板引擎就利用了它来实现DOM节点的模板填充。

    注意:<script><script> 中间不要在任何地方出现'</script>'字符串

     

    关键字,保留字

    以前只记住了几个关键字,现在还注意到了保留字,保留字就是在js当中其实没啥用的但是就是不给用来当做命名的单词,多为Java语言的关键字。

     

    数据类型

    typeof操作符,可以判断某值的数据类型。我们都知道,一共六种。 
    1、undefined 
    2、boolean 
    3、string 
    4、number 
    5、function 
    6、object

     

    undefined与null

    undefined 指变量尚未初始化 
    null 指变量值为一个空对象指针 
    其实它们的意思和用法基本都是一致的,在js里,我们完全可以只用undefined而不去使用null,这样混不混淆都无所谓了。 
    唯一的区别: 
    console.log(typeof undefined)--undefined 
    console.log(typeof null)--object

    阮一锋的解释: 
    null表示"没有对象",即该处不应该有值。典型用法是:

    (1) 作为函数的参数,表示该函数的参数不是对象。 
    (2) 作为对象原型链的终点。

    Object.getPrototypeOf(Object.prototype)
    // null
    

    undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是: 
    (1)变量被声明了,但没有赋值时,就等于undefined。 
    (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。 
    (3)对象没有赋值的属性,该属性的值为undefined。 
    (4)函数没有返回值时,默认返回undefined。

    var i;
    i // undefined
    
    function f(x){console.log(x)}
    f() // undefined
    
    var  o = new Object();
    o.p // undefined
    
    var x = f();
    x // undefined
    
     

    number

    转换数值的三个方法:

    Number(),parseInt(),pasreFloat()

    Number()功能比较强大,规则如下: 
    true:1 
    false:0 
    null:0 
    undefined:NaN 
    "":0 
    "011":11(忽略前面的0) 
    "011.1":11.1(忽略前面的0) 
    "0x11":17(0x开头十六进制) 
    "别的格式的字符":NaN

    parseInt()规则如下: 
    仅转换字符串,其他非数字类型统一返回NaN 
    "":NaN 
    "011":11(忽略前面的0) 
    "011.1":11(忽略前面的0) 
    "0x11":17 
    "123abc":123 
    "abc123":NaN

    parseFloat()规则如下: 
    仅转换字符串,其他非数字类型统一返回NaN 
    "":NaN 
    "011":11(忽略前面的0) 
    "011.1":11(忽略前面的0) 
    "0x11":0(忽略前面的0) 
    "123abc":123 
    "abc123":NaN

    整数还可以通过二进制,八进制,十六进制来表示。 
    其中,八进制字面值的第一位必须是0 
    十六进制字面值的前两位必须是0x

    我们从字符串转过来的时候如果有要求则要再传一位进制数: 
    parseInt("011",2):3 
    parseInt("011",8):9 
    parseInt("011",16):17 
    parseInt("0xaa",16):170 
    parseInt("aa",16):170

    注意:程序在计算的时候0开头的数字会被解析为八进制,0x开头的数字会被解析为十六进制。最终结果为十进制。因此,我们做计算的时候最好不要用带0开头的数字进行计算,避免让别人看迷糊

     

    等号

     

    一个等号:赋值 
    两个等号:判断相等 
    三个等号:判断全等

     

    一、赋值问题 
    在echarts.js源码中看到了一句:

    var ecModel = this._model = new GlobalModel(null, null, theme$$1, optionManager);
    

    其中连续赋值了两次,后来查阅资料,发现执行过程是这样的:

    1、var ecModel =new GlobalModel(null, null, theme$$1, optionManager);
    2、this._model = new GlobalModel(null, null, theme$$1, optionManager);
    

    连续多个赋值操作,可从左到右拆分成每个变量直接等于最后的值,而不会执行像var ecModel = this._model这样的语句。

    其实不推荐这样写,这种写法能避开就避开呗。

    二、关于 ==

    == 和 != 会先转换再比较

    比较规则: 
    1、一个布尔值,一个数字 true:1,false:0 
    2、一个字符串,一个数字 先转成数字 
    3、一个对象,一个数字 先调用对象的valueOf()再按前面的规则 
    4、两个对象 比较是否同一个对象 
    例: var a={},b={}; console.log(a==b);//false 
    5、null==undefined true 
    6、NaN==NaN false

     

    label 语句

    label语句可以在代码中添加标签,以便将来使用。一般与循环语句的break和continue配合使用。
    举个例子:
    我有一个嵌套循环,当满足条件的时候执行语句并跳出外层循环。
    var num=0;
    firstfor:
    for(var i=0;i<10;i++){
        secondfor:
        for(var j=0;j<10;j++){
            if(i==5 && j==5){
              break firstfor;//跳出第一个for循环
            }
            num++;
        }
    }
    alert(num); //num=55
    
     

    重载

     

    js没有重载!

    重载只在java里只说过,js没听说过。
    
    然而百度到的全都是js实现重载的方法。
    

    我的疑问(等待回答):

    既然js都不支持重载了,为什么还要特意去模仿实现重载呢?

  • 相关阅读:
    Atitit 人脸识别 眼睛形态 attilax总结
    Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx
    atitit 板块分类 上市公司 龙头企业公司 列表 attilax总结.docx
    Atititi atiitt eam pam资产管理 购物表去年.xlsx
    使用cmd查看电脑连接过的wifi密码(一)
    常见十大web攻击手段 悟寰轩
    常见web攻击方式 悟寰轩
    【MYSQL数据库】MYSQL学习笔记mysql分区基本操作 悟寰轩
    Filter及FilterChain的使用详解 悟寰轩
    启动tomcat spring初始化两次问题(eg:@PostConstruct) 悟寰轩
  • 原文地址:https://www.cnblogs.com/qq765065332/p/9358400.html
Copyright © 2011-2022 走看看