javaScript学习笔记

举报
zhxping 发表于 2018/03/16 14:52:10 2018/03/16
【摘要】 javaScript:<script>属性(共6个): async:可选,是否立即下载脚本。只对外部脚本起作用。不妨碍页面其他操作 charset:可选,src指定代码的字符集。(很少用,浏览器自动忽略) defer:可选,延迟执行,仅对外部脚本有效。 language:已废弃。声明脚本语言。 src:可选,要执行的外部文件 typ...

javaScript:

<script>属性(共6个):

      async:可选,是否立即下载脚本。只对外部脚本起作用。不妨碍页面其他操作

      charset:可选,src指定代码的字符集。(很少用,浏览器自动忽略)

      defer:可选,延迟执行,仅对外部脚本有效。

      language:已废弃。声明脚本语言。

      src:可选,要执行的外部文件

      type:可选,language的代替品。默认为text/javascript。

使用方式:2种

      1、HTML内嵌

            <script>

                  js........

            </script>

      2、外部引用

            <script src="" />

            <script src="" ></script>

          blob.png

<script>放在head中,会影响浏览器的程现。一般放在body末尾。

 

javascript标识符规则:

      字母、下划线、$开头,

      可含字母、数字、下划线、$

      第一个字母小写(构造函数第一个字母大写区分)

      驼峰命名

      禁用关键字、保留字、true、fals、null等

关键字:

blob.png

保留字:

blob.png

blob.png 

 

注释:

      //单行注释

      /*

       *多行注释

       */

严格模式:处理不确定行为,不安全操作抛错。

      "use strict";

      编码语句使用;

 

变量:松散类型。

      var 变量名;(作用域中声明变量,退出后销毁)

            *不初始化,其默认值是undefined

            *不使用var声明变量时,会把变量默认为全局变量(不推荐!!!)

            *可同时初始化多个:var a="aa",b,c=1;

6种数据类型:

      5种基本数据类型:Undefined、null、Boolean、Number、String

      1种复杂类型:Object

--typeof(变量) 获取数据类型

"undefined":未定义/未初始化

"boolean":Boolean

"number":Number

"string":String

"odject":Object/Nul

"function":函数

Undefined: 未定义/未初始化===undefined  true

Null

Boolean:仅有true、false。(True、False都不是Boolean)

转换规则:

blob.png

Number:

      var floatNum=3.125e7   //  31250000

      浮点数最高精度:17位。浮点数值计算会产生舍入误差

      范围:5e-324(-Infinity) — 1.7976931348623157e+308(Infinity)

            Number.MIN_VALUE — Number.MAX_VALUE

            *正负无穷大不能参与计算

            isFinite(123); 判断数字是否在可计算范围内

      NaN:非数字

            isNaN(20);        //false 是不是 非数字

            isNaN("20");            //false 可以被转成数字

            isNaN("aaa");     //true

            isNaN(true);      //false     * true-->1   false-->0

            *同样适用于对象,其看对象的valueof能不能转换成数字

      Number("11"):转型函数,可用于任何数据类型

      parseInt("11",16):转换成整形,第二个参数为字符进制

      parseFloat():转换成float,用法上与parseInt相似。

String:

      ''、""均可适用

blob.png

      string.lengt  获取字符长度(返回值为Number)

      string值不可变,值改变后,对象就改变。原对象即销毁

      object.toString(n):转换为string,n为以N进制转换。不传默认为10进制

Object:

      var obj = new Object();(创建object,()可省略,但不推荐)

      object实例共同属性方法:

            Constructor:构造函数

            hasOwnproperty(propertyName):判断给定属性在当前实例中是否存在。propertyName为string类型。obj.hasOwnproperty("name")

            isPrototypeOf(obj):一个对象是否为另一对象的原型。--继承

            propertyIsEnumerable(propertyName):给定参数能否使用for-in枚举,propertyName为string类型

            toLocaleString():返回对象的字符串表示。

            toString():返回该对象的字符串

            valueOf():返回该对象的字符串,通常与toString返回类容相同

 

运算符:

      ++:   +1,注意前后位置不同,计算顺序不同

      --:   -1,注意前后位置不同,计算顺序不同

      +=:  

      -=:

      +:

      -:

      *:

      /:

      %:取模(取余)

      ~:按位非

      &:按位与

      |:按位或

      ^:按位异或

      <<:按位左移,不会操作符号

      >>:按位右移,符号不变

      >>>:按位右移,改变符号

逻辑判断:

      !:非

      &&:与

||:或

>:

<:

<=:

>=:

==:

!=:

===:全等

!==:

?:条件操作符

语句:

      分支:

            if(){ }else if(){ }else{ }

            with(){ }  性能问题,不建议使用

            switch(){case:"" break} case可跟各种语句,方便编码。case使用全等,"10"不等于10

      循环:

            do{ }while()            循环体至少被执行一次(先执行,后判断)

            while(){ }

            for(var i=0;i<count;i++){ }

            *注意,while做不到的,for同样做不到。

            for(ar in array){ }  ar为array中的每个元素,array注意判空

            break:

            continue:结束当前循环,开始下次循环

            return:return后的语句永远不会执行。

函数:

      function funMane(p1,p2){} function 函数名(参数){函数体}返回值可有可无

      *不能出现同名函数

      *函数或参数名不能是:eval 或 arguments

      函数会把参数组成一个数组来接受,所以在调用函数的时候,对于参数并不严格,可传递多个,可不传。但注意方法正确性。arguments为参数组成的数组,可在方法中调用它。arguments的长度是在调用的时候决定的,以后不能改变它的长度。修改它长度之外的值也无效。

      JS中函数没有重载

变量

      5中基本类型,操作的的是保存在变量中的值。(string类型在别的语言中是obj,js中为普通基本类型)

      引用类型的值保存在内存中,js不能直接操作

      =复制基本类型时,会创建一个新的变量,然后再把值复制到新分配的这个位置上。

      =复制object类型时,会同样创建变量,再复制值,不过这个值是引用,不会在堆内存中创建新的object。复制后的变量与原来的变量将都指向堆中的同一个对象。

      变量传递时,都是值传递!!!object类型的参数也一样。注意其传递的是引用值,不是实际的堆中的对象。

 

没有块级作用域

      声明变量

      查询标识符:从当前作用域一层一层往上找,直到全局。全局还没有,则报错

垃圾收集机制:

      自动回收。开发人员不用过多关注。

      回收方式:

            1、标记清除

            2、引用计数

            3、手动调用。有兴趣可以研究。不推荐。

            内存释放:解除引用,自动释放内存。提高性能。

引用类型:

      Object:

            var obj1 = new Object();

            var obj2 = {};

            对象属性访问方法:

                  1、obj.per  推荐

                  2、obj[per] -属性含有关键字、保留字或者会导致语法错误的字符时使用。优点可以通过变量来访问对象属性。

      Array:

            1、js中数组无数据类型限制。可存储任意类型数据。

            2、数组长度可变。根据内容自动调整大小。

      创建数组:

            var ar = new Array();

            var ar = new Array(10);

                  *可省略new关键字

            var ar = [];

            var ar = [1,2,3]

      取读数组:

            ar[下标]:下标从0开始

            ar[下标]=‘’:赋值

      数组length属性可手动设置。最大是4294967295。若设置的值小于原数组,则会从原数组截取相应的长度,后面的会舍弃。若超过了原有的长度,则原来无值的项默认为undefined。

      ar.toLocaleString()     调用每项的toLocaleString方法,返回拼接后的字符串

      ar.toString()     返回数组中每项的字符串形式以,拼接而成的字符串。会调用每项的toString方法,然后拼接。

      ar.valueOf()            返回的为数组

      ar.join("|")            重现toString方法,可修改拼接的连接符。默认为,

数组操作:

      栈方法:后进先出

            push()            添加(从末尾开始)

            pop()       移除最后一项,并返回移除的项。

      队列方法:先进先出

            shift()     开头添加

            unshift()   开头移除

      排序:

            reverse()   逆序

            sort()            排序,默认toString转换每一项,然后升序排列。可自定义排序规则                  *都返回经处理后的新数组

      其他方法:

            concat()    复制

            slice()     截取

            splice()    指定位置插入、修改、删除等

      位置查找:

            indexOf()

            lastIndexOf()

            *这两方法都使用全等

            *都可接受两个参数1、要查找的项 2、起始位置,默认为0

      迭代:5个,

            every()     判断ar中每一项是否都符合标准,全部符合则返回true

            filter()    返回符合的数组

            forEach()  

            map()       返回运行后 新的数组

            some()            任意一项返回true,则返回true

            *均不会修改数组中包含的值。

            *均接受三个参数,用法如下

            ar.forEach(function(item,index,array){

                  });

      缩小:

            reduce()

            reduceRight()

            *每次计算的累计值,当前值,index,arr

            ar.reduce(function(prev,cur,index,array){

                  });

            *从开头/末尾开始

            *返回最终的计算结果

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。