zoukankan      html  css  js  c++  java
  • javascript 学习一

    一、javascript 与 ECMAscript。

    javascript 是基于 ECMAscript 为核心的基础上,结合 DOM 和BOM 方法和接口实现的综合语言。

    ECMAscript 是一个开发规则,web 是 ECMAscript 的宿主环境之一。node也是宿主环境之一。

    javascript 是 ECMAscript 的扩展。

    二、<script></script>.

    属性为 src ,可以引用任何域内的文件,不规定是否是以 .js 作为后缀名。

    src 为阻塞加载,即当js 文件没有加载完成时,浏览器是不加载 script 标签之后的东西的。

    type  =  text/javascript 

    当src 属性存在时,script 标签内部写入的js会被忽略。、

    三、noscript 

    noscript 标签是在浏览器不支持jsvascript 或者 用户关闭了jsvascript 功能之后显示的元素,<noscript>文本写在这里</noscript>。当javascript被支持的时候,noscript是不显示的。

    四、变量。

    ECMAscript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。

    每个变量仅仅是用于保留值的占位符。用var 定义变量。

    五、数据类型

    五种简单数据类型

    Null ,Undefined ,Number ,Boolean, String

    一种复杂数据类型

    Object

    通过typeof 返回的数据类型。

    typeof  Null  == Object    

    typeof Number == number

    typeof String == string 

    typeof Boolean = boolean

    typeof Unbefined == undefined

    typeof array = Object

    typeof object = object

    typeof function = function

    ////////

    undefined

    undefined 的定义主要是通过var定义之后,并没有赋值,则ECMAscript 会定义为undefined。并不提倡 var a = undefined;  的写法,因为undefined 最明显的作用是为了比较一个变量的值是否等于 undefined  ,用于比较。

    undefined 的变量和没有通过var 定义的变量不同,如果没有通过var 声明,则会直接报错 not defined 。如果没有通过var 定义,但是typeof  依然会返回 undefined。即对未初始化和未定义的变量 的返回值都为undefined。

    null

    null  代表一个指针,指向一个值为空的对象。

    undefined == null 是因为  undefined 实际上是从null派生出来的,所以 ECMAscript 规定 他们的相等性测试返回true。

    不提倡 将变量直接显式的赋值为undefined。

    提倡 定义一个空的对象的变量时,应该明确的让变量保存null值。

    这有助于区分null 和undefined 的区别 

    Boolean

    true 和 false 

    Boolean() 却可以将括号内变量转化为boolean值。转换的值只有true 和false 两种。

    number类型

    console.log(Boolean(1));//true 任何非0数字都被转换为true,包括负数和无穷大。
    console.log(Boolean(0));//false 0 和 NaN 转换为false
    console.log(Boolean(-1));//true

    string 类型

    console.log(Boolean(""));//false  空字符串会转换为false
    console.log(Boolean("we"));//true 任何非空字符串都会转换为true

    boolean类型   结果显而易见

    console.log(Boolean(true));//true 
    console.log(Boolean(false));//false  

    Object类型

    var a = {};
    console.log(Boolean(a));//true  任何对象都会被转换为true 
    console.log(Boolean(null));//false  null会被转换为false

    undefined 类型   undefined类型只有一个值 undefined 所以只能被转换为false。

    console.log(Boolean(undefined));//false  undefined会被转换为false

    Number

    ECMAscript 在严格模式下不支持 8进制的数字。

    1、浮点数。

    即必须有一个小数点,且小数点后要有一个数字。

    因为存储浮点数的内存是整数的两倍,所以ECMAscript 会适时的将浮点数转换为整数,如果 小数点后没有数字和 小数点后数字为0的情况下,会将浮点数转换为 整数。

    10.0 = 10    10. = 10

    但是 0.1 + 0.2 ==0.3 返回的确实 false, 最高精度为17位小数, 将大于6个0 的数值转换为e , 即 1000000 = e的6次方。

    2、数值

    isFinite()  会测试括号内的数字是不是有穷的,即最大值为无穷大,最小值为无穷小。

    浏览器可以显示的最大值和最小值

    console.log(Number.MIN_VALUE);// 可以显示的最小值 5e-324
    console.log(Number.MAX_VALUE);//可以显示的最大值 1.7976931348623157e+308
            

    isFinite() 会比较 括号内的值是否在 最大值和最小值之间。

    3、NaN。

    一个特殊的数字,用于应该返回数字,但是没有返回数字的情况。

    任何涉及NaN的操作,最终结果都会返回NaN。

    NaN和任何值都不想等,包括自身。

    isNaN()  将内容转换为数值,判断结果是否为NaN。

    4、数值转换

    Number(),parseInt(),parseFloat().

    number() 忽略0开头,空字符串 转换为 0;

    parseInt()具有两个参数,第二个参数可以指定转换的进制类型,忽略小数点之后的数字,返回整数

    parseFloat()一个参数,识别第一个小数点,忽略第二个小数点之后的数字,忽略0开头。

    string

    string 字符串定义之后不能够更改,只能用其他值填充,可以有单引号和双引号包含表示,但是单双引号必须成对匹配出现。当存在特殊的字符字面量的时候,需要通过来进行转义。

    有string.length 属性,返回字符的长度。

    string 的更改必须先销毁之前的字符串,然后用另一个包含新值的字符串填充该变量。

    转换为字符串  toString() 方法。

    String(a) 方法,如果 a 有toString 方法,则会调用该方法,如果是null,undefined,则返回字面量。

    Object

    ECMAscript中的对象是 一组数据和功能的集合。可以通过new 操作符和要创建的对面类型的名称来创建。

    var a = new Object();
    var a = new String();
    var a = new Boolean();
    var a = new Array();
    var a = new Number();

    六、操作符

    1、递增和递减

    --a,++a  前置递增和前置递减,会在引用a之前完成计算操作。a--,a++ 是后置递减和递增,会在引用了a值计算之后才进行递增和递减的计算。

    前置递增和递减操作是域执行语句的优先级想等。

    当 a是字符串类型的话,如果其中含有数字,则会将a转换为数字之后进行计算,如果不含数字,则会转换为NaN。字符串变为 数值变量

    a是布尔值,则会将a  true 转换为1,false转换为0,然后进行计算,布尔变量转换为 数值变量。

    a 是浮点数或整数时,直接进行 数值计算。

    a 是对象时,则会先执行 valueOf() 操作,取得可以执行以上可操作的值,如果为NaN,则执行toString()。对象值变成数值变量。

    2、-,+。

    + 在数字之前不会对数值产生任何影响。

    - 主要表示负数。

    + 后跟着非number类型的值时,会执行 Number()操作。

    - 后跟着非number 类型的值时,后执行number()操作,然后在结果上添加 负号

    3、逻辑操作符。也叫 布尔操作符。

    或与非  |  &&  !

    返回的都是 布尔值。

    逻辑 非

     用一个感叹号表示  !  ,判断是否为真,如果为真,则返回 false  ,如果为false 则返回true,在判断之前会 执行 boolean() 操作,将 感叹号后的值转化为boolean值之后再进行判断。

    逻辑 与  &&

    a&&b   判断boolean(a)与boolean(b) 的值是否同时为true,如果都为true,则返回true,如果有一方不是true,则会返回false。而且当 第一个值a 的返回值为false 的时候,会跳过b 的判断,直接返回false。 所以 逻辑 与  时一种短路操作符。

    逻辑 或  || 

    a || b  判断,如果a和b中有一个为true,则会返回true,只有两个都有为false 的时候才会返回false。  逻辑或 也是短路操作符,即如果第一个值为true'  的时候,就会跳过b 的判断,直接返回true。

    可以用于 赋值操作,如果a为true,则直接采用a 的值,否则采用b 的值。类似与 a?a:b; 三目运算符。先判断a,如果a为true 则返回 a,否则返回b。a为优先,b作为备用。

    4、* 乘法   / 除法  % 求模

    乘法   a*b 

    如果a或b有一个不是数值,则后台执行number(),转换为数值之后再进行计算。

    除法 a/b  

    都是数值,则进行常规的除法运算。

    如果a或b有一个不是数值,则后台执行number(),转换为数值之后再进行计算。如果b为0,则返回NaN。

    % 求模  a%b  返回 的是余数。

    都是数值,则进行常规的除法运算。返回 余数。

    如果a或b有一个不是数值,则后台执行number(),转换为数值之后再进行计算。如果b为0,则返回NaN。

    5、+ - 加法 和 减法

     加法 a+b 

    如果a 和 b都是数字,则进行常规的加法运算

    如果有一方为NaN,则结果为NaN。

    如果a是字符串,b为非字符串,则将 b   在后台通过 toString() 方法转换为字符串,与a进行字符串拼接。

    小括号包含的可以优先计算

    减法 a-b

    如果a 和 b都是数字,则进行常规的加法运算

    如果有一方为NaN,则结果为NaN。

    与加法不同,如果其中任何一方不是数值,则会后台通过 number()转换为 数值,然后进行计算。
    小括号包含的可以优先计算
  • 相关阅读:
    How to import data from Oracle into PostgreSQL(转)
    C++——算法 回溯 八皇后问题
    Python——彩图变线稿
    算法——二叉树的遍历 前序 中序 后序 广度优先 深度优先 (转)
    C++——计数排序 (转)
    C++——位运算相关 (转)
    C++——std::vector相关 (转)
    C++——双指针 (转)
    C++——求三数之和,实操从低效做法逐步提升到高效做法,受益良多
    C++——基础容器
  • 原文地址:https://www.cnblogs.com/RoadAspenBK/p/7755613.html
Copyright © 2011-2022 走看看