• javascript基本概念


    1:typeof 用来判断变量的数据类型,虽然null是Null数据类型,但返回的是object数据类型;虽然函数是object数据类型,但返回的是function类型

    var x=null;typeof x;
    "object"

    function x(){}; typeof x;
    "function"

    2:undefined值派生自null值,对它们的相等性测试返回true;"=="操作符处于比较目的会转换其操作数

    undefined==null
    true

    3:Boolean类型的字面值true和false是区分大小写的,即:True和False都不是Boolean值,是标识符

    var y=true;y;
    true

    4:可以对任何数据类型的值调用Boolean函数,而且总会返回一个Boolean值;if语句会自动执行相应的Boolean转换

    Boolean(0)
    false
    Boolean("")
    false
    Boolean(undefined)
    false
    Boolean(null)
    false
    Boolean(false)
    false
    Boolean(NaN)
    false

    5:ECMAScript5引入了严格模式的概念:通过在脚本顶部添加代码编译指示“use strict”的方式,支持严格模式的浏览器包括IE10+,Firefox4+,Safari5.1+,Opera12+和Chrome

    "use strict"
    function x(){x=5;}
    x();
    undefined

    6:八进制和十六进制

    var x=070,y=9;x+y
    65
    var x=0xA,y=9;x+y
    19
    var x=0xa,y=9;x+y
    19

    7:基于IEEE754数值的浮点计算通病,浮点数值计算会产生舍入误差

    0.1+0.2
    0.30000000000000004

    8:NaN两特点:任何涉及NaN的操作都返回NaN;NaN和任何值都不相等,包括本身

    5/0
    Infinity
    NaN/0
    NaN
    NaN==NaN
    false

    9:Number函数可以用于任何数据类型,parseInt和parseFloat主要用于把字符串转换成数值

    Number("")
    0
    parseInt("")
    NaN
    Number(null)
    0
    parseInt(null)
    NaN
    Number(undefined)
    NaN
    parseInt(undefined)
    NaN
    Number( 456KK)
    VM1205:2 Uncaught SyntaxError: Unexpected token ILLEGAL
    Number(" 456KK")
    NaN
    parseInt(" 456KK")
    456
    parseInt(false)
    NaN
    parseInt(22.5)
    22
    parseInt(070,8)
    46
    parseInt(0xa)
    10
    parseFloat(0xa)
    10
    parseFloat(0xa,10)
    10
    parseFloat(0xa,16)
    10

    10:中文两个字节,返回值有问题

    var x="你好";x.length
    2

    11:转换字符串:toString()方法,String()函数,+空字符串

    var x=1;x.toString()
    "1"
    var x=20;x.toString(16)
    "14"
    var x=null;String(x)
    "null"
    var x=undefined;String(x)
    "undefined"
    undefined+""
    "undefined"
    1+""
    "1"
    null+""
    "null"
    true+""
    "true"

    12:ECMAScript操作符的与众不同在于它们能够适用于很多值,例如:字符串,数字值,布尔值,甚至对象

    var x="";x++
    0
    var x=true;x++
    1
    true+false
    1
    true+""
    "true"
    true+"ccc"
    "trueccc"
    true+{}
    "true[object Object]"
    {}++
    VM2136:3 Uncaught SyntaxError: Unexpected token }
    var x={};x++
    NaN
    ({})+true
    "[object Object]true"

    13:位操作符(无符号右移>>>,有符号右移>>,左移<<,按位异或^,按位或|,按位与&,按位非~)

    var x=100;
    x=~x
    -101
    var x=25&3
    undefined
    var x=25 & 3
    undefined
    var x=25 & 3;x
    1
    var x=25 | 3
    undefined
    var x=25 | 3;x
    27
    var x=25 ^ 3;x
    26

    14:Boolean类型转换方法:!!方法和Boolean方法

    var x="";Boolean(x);
    false
    var x="";!!x;
    false

    15:逻辑与,逻辑或

    ({}) && true
    true
    true && ({})
    Object {}
    "" && true
    ""
    null && true
    null
    false && ({})
    false
    "" && null
    ""

    16:注意“1”性操作符容易犯的错误

    true+1
    2
    "1"+1
    "11"
    "1"*1
    1
    "1"-1
    0

    17:两个字符串比较,比较字符编码值,大写字母的字符编码全部小于小写字母的字符编码

    "Abc"<"abc"
    true
    "abc"<"cde"
    true
    "dbc"<"cde"
    false
    NaN<3
    false
    NaN>=3
    false
    "23"<"3"
    true
    "23"<3
    false

    18:要比较相等性之前,不能将null和undefined转换成其它任何值;但是小于或者大于比较时,确可以进行数值转换

    null<1
    true
    undefined<1
    false
    Number(undefined)
    NaN
    null==0
    false
    undefined==0
    false
    null>0
    false
    null<0
    false

    19:ECAMAScript中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到

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

    for(;;){break;}

    20:with语句的作用是暂时改变作用域链、减少的重复输入;js的解释器需要检查with块中的变量是否属于with包含的对象,这将使with语句执行速度大大下降,并且导致js语句很难被优化。所以在以后的高效代码开发中我们应该尽可能的避免使用with语句

    with(this){var a=1;}alert(a);

    21:swich语句在比较值时使用的全等操作符。可以在switch语句中使用任何数据类型;每个case值不一定是常量,可以是变量,甚至是表达式

    22:arguments是与数组类似的一个对象。修改arguments对象中的值会反映到命名参数中,但修改命名参数的值不会影响arguments对象中的值。他们的内存空间是独立的,但是他们的值是单行同步;没有传递值得命名参数自动被赋予undedifined值

    function finn(a,b,c)
    {
    console.log(arguments[0]);
    arguments[1]=5;
    console.log(arguments[1]);
    console.log(b);
    console.log(c);
    }
    finn(1,2);
    VM1958:4 1
    VM1958:6 5
    VM1958:7 5
    VM1958:8 undefined

    23:ECMAScript函数不能像传统意义那样实现重载;如果定义两个名字相同的函数,则该名字只属于后定义的函数。没有函数签名的概念

    function finn (a)
    {
    console.log(a);
    };
    function finn(a,b)
    {
    console.log(a+1);
    };
    finn(1);
    VM2237:8 2

    24:异常信息:SyntaxError: Unexpected token ILLEGAL(意外的非法标记),往往是由于中英文状态错了

    var x=1;x // 英文分号写成了中文
    VM2319:2 Uncaught SyntaxError: Unexpected token ILLEGAL

    25:<script>标签特性:外部javascript扩展名不是必须,动态生成javascript代码成为可能;可以包含外部域的文件;defer延迟脚本

    26:javascrpt诞生于1995年。dom,既然是一种模型,那么他就不仅仅限制于JavaScript可以去实现他,在很多语言里,都可以直接进行dom的相关操作。javascript中的dom实现,只是这种语言对于dom的实际应用

  • 相关阅读:
    简述-计算机语言的前世今生
    记一次由于引用第三方服务导致的GC overhead limit exceeded异常
    JAVA初始化及类的加载
    springboot容器启动顺序之@Configuration ContextRefreshedEvent事件初始化 ApplicationRunner
    高并发编程之发布与溢出
    编写高质量JAVA代码之让接口的职责保持单一
    Spring Boot中初始化资源的几种方式
    Thread.yeild方法详解
    JAVA基础之this关键之理解
    Django 1.10 中文文档------3.3.8 会话sessions
  • 原文地址:https://www.cnblogs.com/syf/p/4319017.html
Copyright © 2020-2023  润新知