zoukankan      html  css  js  c++  java
  • JS需要注意的细节和一些基础知识

    1、<script>标签

    1、在<script></script>中不要在任何地方出现</script>字符串,如alert(“</script>”) 这样会终止执行,所以可以改为alert(“</script>”) 转义一下

    2、defer属性,等页面加载完成之后才开始加载js文件

    <scripttype="text/javascript"defer="defer"src="js.js"></script>

    3、async异步加载js

    <scriptasync="async"src="js.js"></script>

     

    2、类型判断

    typeof

    var message = "aa";

    alert(typeof (message)) //“String”

    typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined

    对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性

    instanceof

    instanceof 用于判断一个变量是否某个对象的实例

    var person = new Array();

    alert(person instanceof Array);

     

    3、作用域

    jS没有块级作用域,也就是在方法中的内部用{ }两个花括号括起来的部分是没有单独的作用域的。放到方法中则不会出现这种问题。块级作用域和其他语言(如C#)有所不同。

     

    if (true) {

                var color = "red";

            }

            alert(color);  //结果 red

    所有变量都存在于一个执行环境(也称为作用域)当中,这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量,下面是总结:

    1、  执行环境有全局执行环境和函数执行环境之分。

    2、  每次进入一个新执行环境,都会创建一个用于搜索变量的函数的作用域链。

    3、  函数的局部环境不仅有权访问函数作用域中的变量,而去有权访问父环境的任何数据。

    4、  执行环境中的变量查找是向上查找,也就是说先从当前内部进行查找是否有这个变量,如果有则立即返回,如果没有则向上继续查找。

     

    4、垃圾回收

    将不在用的全局变量或对象或变量的值赋值为null可以有效的进行垃圾回收

    垃圾回收机制分为标记清除和引用计数清除

    标记清除:是目前主流的垃圾回收算法。这种算法的思想是给当前不使用的值加上标记,然后进行回收。

    引用计数:这种算法的思想是跟踪记录所有值被引用的次数,目前不在使用这种方法,因为如果出现循环引用的现象时,这种算法会出现无法回收的现象。

     

    解除变量的引用不仅有助于消除循环引用的现象,而且对垃圾收集也有好处,所以应该及时解除不再使用的全局对象、全局对象属性的引用。

     

     

    4、Number类型

     

           var num = 10.005;
    
            alert(num.toFixed(2));  //保留两位小数 10.01
    
            var num1 = 10;    

     

    依次对数值转换不同的进制数。

     

            alert(num1.toString());   
    
            alert(num1.toString(2));
    
            alert(num1.toString(8));
    
            alert(num1.toString(16));

     

     

    Math对象

     

    用Math方法对数组取最大值

     

           var values = [1, 2, 3, 4, 5, 6, 7];
    
            var max = Math.max.apply(Math, values);  //7
    
            var max1 = Math.max(values);  //NaN
    
            alert(max1);

     

    正常语句Math.max方法是不可以对数组进行取最大值的,可以用applay方法进行改写,这个技巧的关键是吧math对象作为apply的第一个参数,从而正确的设置this的值

     

    Math.Ceil() 执行向上舍入,向上舍入最为接近的数。

     

    Math.floor() 执行向下舍入,向下舍入最为接近的整数。

     

    Math.round() 执行标准舍入,四舍五入

    Math.random() 产生一个从0到1的随机数。

  • 相关阅读:
    haproxy tcp 反向代理
    c# 字节高低位
    Mac Launchpad图标调整
    vsftp 777权限
    centos7下tomcat7 或tomcat8启动超慢原因
    mysql连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link
    Mac mysql 运行sql文件中文乱码的问题
    Mac Mysql [ERR] 2006
    记一次部署java项目的问题
    典型的响应式布局实例代码
  • 原文地址:https://www.cnblogs.com/y8932809/p/5378807.html
Copyright © 2011-2022 走看看