Javascript基础系列-javascript概述

栏目: JavaScript · 发布时间: 5年前

内容简介:核心是针对window.onload是在dom文档树加载完和所有文件加载完之后执行一个函数。 document.ready原生中没有这个方法。jquery中有 (document).ready要比winndow.onload先执行window.onload只能出来一次,$(document).ready可以出现多次

核心是针对 文本数组日期正则表达式 的操作定义了很少的api,但是这个api不包括输入输出功能。输入和输出功能(类似网络、存储和图形相关的复杂特性)是由Javascript所属的 宿主环境 提供的

表达式和语句

  • 表达式仅仅计算出一个值但并不做任何操作,它并不改变程序的运行状态。
  • 语句并不包含一个值(或者说它包含的值我们并不关心),但他们改变程序的运行状态。

当函数和对象合写在一起时,函数就变成了方法。

let a = {
        fn:function(){
            console.log('这个函数就是方法!')
        }
    }
复制代码

window.onload 和document.ready

window.onload是在dom文档树加载完和所有文件加载完之后执行一个函数。 document.ready原生中没有这个方法。jquery中有 (document).ready要比winndow.onload先执行window.onload只能出来一次,$(document).ready可以出现多次

Javascript是区分大小写的语言。

Javascript会忽略程序中标识之间的空格

注释

但是不能有嵌套的注释

直接量

直接量 就是程序中直接使用的数据值,例如下面:

12
    1.2
    "hello world"
    'hi'
    true
    false
    /javascript/gi
    null
复制代码

标识符(变量)命名规范

Javascript标识符必须使用数字、字母、下划线和$符号命名,数字不能作为开头。

关键字和保留字(不能用作变量名,当前版本不使用,后续版本可能会用到)

Javascript的具体实现

具体实现可能定义独有的全局变量和函数,每一种特定的Javascript运行环境(客户端、服务端)都有自己的一个全局属性列表。

可选的分号

Javascript并不是在所有换行处都填补分号:只有在缺少了分号就无法正确解析代码的时候,Javascript才会填补分号。

在return、break和continue和随后的表达式之间不能有换行。如果添加了换行,程序则只有在极特殊的情况下才会报错,而且程序的调试非常不方便

类型、值和变量

Javascript的数据类型分为两类: 原始类型 (基本数据类型)和 对象类型 (引用数据类型)。原始类型包括数字、字符串、和布尔值。

Javascript中有两个特殊的原始值:null(空)和undefined(未定义)

对象(object)是属性(property)的集合,每个属性都由“名/值对”(值可以是原始值,比如数字、字符串,也可以是对象)构成。

普通的Javascript对象是“命名值”的无序集合。Javascript同样定义了一种特殊的对象----数组(表示带编号的值的有序集合)

Javascript还定义了另一种特殊对象----函数。函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码,并返回运算结果。

如果函数用来初始化(使用new运算符)一个新建的对象,我们称之为构造函数

在Javascript中只有null和undefined是无法拥有方法的值。

在Javascript中,字符串是不可变的:可以访问字符串任意位置的文本,但Javascript并未提供修改已知字符串的文本内容的方法。

不在任何函数内声明的变量称做 全局变量 ,它在Javascript程序中的任何地方都是可见的。

Javascript 中的所有数字均用 浮点数值 表示

当数字运算结果超过了Javascript所能表示的数字上限(溢出),结果为一个特殊的无穷大值,在Javascript中以infinity表示。

零除以零是没有意义的,这种整除运算结果也是一个非数字值,用NaN表示

Javascript中的非数字值有一点特殊:它和任何值都不相等,包括自身。也就是说,没办法通过x==NaN来判断变量x是否是NaN。相反,应当使用x!=x来判断,当且仅当x为NaN的时候,表达式的结果才是true。

由于舍入误差,0.3和0.2之间的近似值实际上并不等于0.2和0.1之间的近似差值。

字符串是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集。

字符串直接量可以拆分为数行,每行必须以反斜线(\)结束,反斜线和行结束符都不算是字符串直接量内容。

Javascript的内置功能之一就是字符串连接。如果将加号(+)运算符用于数字,表示两个数相加。但将它作用于字符串,则表示字符串连接,将第二个字符拼接在第一个之后。 在Javascript中字符串是固定不变的,类似replace()和toUppercase()的方法都返回新字符串,原字符串本身并没有发生改变。

布尔值

  • 下面这些值都会被转化为false
    • undefined
    • null
    • -0
    • NaN
    • ""

全局对象

  • 当javascript解释器启动时(或者任何Web浏览器加载页面的时候),它将创建一个新的全局对象,并给它一组定义的初始属性。
  • 在代码的最顶级----不在任何函数内的Javascript代码----可以使用Javascript关键字this来引用全局对象。
  • 如果代码声明了一个去全局变量,这个全局变量就是全局对象的一个属性。

包装对象

  • 当使用字符串的一个方法或者属性时,Javascript就会将字符串值通过调用new String() 的方式转化成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会销毁(其实在实现上并不一定创建或销毁这个临时对象,然而整个过程看起来是这样)
  • 当运行这段代码时,t的值是undefined。第二行代码创建一个临时字符串对象,并给其len属性赋值为4,随即销毁这个对象。第三行通过原始的(没有修改过)字符串创建一个新的字符串对象,尝试读取其len属性,这个属性并不存在。表达式求值结果为undefined。
var s = "test"
    s.len = 4;
    var t = s.len // undefined
复制代码
  • 存取字符串、数字或者布尔值的属性时创建的临时对象称做包装对象。
  • 通常,包装对象只是被看做是一个实现细节,而不用特别关注。由于字符串、数字和布尔值的属性都是只读的,并且不能给他们定义新属性。因此他们是有别于对象的。
  • Javascript会在必要时将包装对象转换为原始值,因此上段代码中的对象S、N、和B常常(但不总是)表现的和值s、n和b一样。“==”等于运算符将原始值和其包装对象视为相等,但“===”全等运算符将他们视为不等。通过typeof运算符可以看到原始值和其包装对象的不同。
var s = "test",n=1,b=true
    var S = new String(s)
    var N = new String(n)
    var B = new String(b)
复制代码

不可变得原始值和可变的对象引用

  • 字符串中所有的方法看上去返回了一个修改后的字符串,实际上返回的是一个新的字符串值
  • 原始值的比较是值的比较:只有在他们的值相等时他们才相等
  • 如果比较两个单独的字符串,当且仅当他们的长度相等且每个索引的字符都相等时,Javascript才认为它们相等。
  • 对象的比较并非值的比较:即使两个对象包含同样的属性及相同的值,他们也是不相等的。各个索引元素完全相等的两个数组也不相等。
  • 对象值都是引用,对象的比较均是引用的比较:当且仅当他们引用同一个基对象时,他们才相等。
  • 如果你想得到一个对象或数组的副本,则必须显式复制对象的每个属性或数组的每个元素。
function equalArrays(a,b){
        if(a.length!=b.length) return false;
        for(var i = 0;i < a.length;i++){
            if(a[i]!==b[i]) return false;
            return true
        }
    }
复制代码

类型转换

x+"" // 等价于String(x)
    +x   //  等价于Number(x)也可以写成x-0
    !!x  //  等价于Boolean(x) 注意是双叹号
复制代码
  • Number类定义的toString()方法可以接收表示转换基数(radix)的可选参数,如果不指定此参数,转换规则将是基于十进制。
var n  = 17;
    binary_string = n.toString(2);
    octal_string = "0" + n.toString(8);
    hex_string =  "0x" + n.toString(16)
复制代码
  • toFixed() 根据小数点后的指定位数将数字转换为字符串,它从不使用指数记数法。
  • 如果通过Number()转换函数传入一个字符串,它会试图将其转换为一个整数或浮点数直接量,这个方法只能基于十进制数进行转换,并且不能出现非法的尾随字符。
  • parseInt和parseFloat都会跳国任意数量的前导空格,尽可能解析更多数值字符,并忽略后面的内容。如果第一个非空格字符是非法的数字直接量,将最终返回NaN。
  • parseInt可以接收第二个可选参数,这个参数指定数字转换的基数,合法的取值范围是2~36.
  • 对象到布尔值的转换非常简单:所有的对象(包括数组和函数)都转换为true。对于包装对象也是如此。

不同的特定的toString

  • 对象:返回一个字符串类似"[object Object]"
  • 数组:将数组元素转换为一个字符串,并在元素之间添加逗号后合并成结果字符串。
  • 函数:返回这个函数的实现定义的表示方法。
  • 日期:方法返回一个可读的(可被Javascript解析的)日期和时间字符串。
  • 正则:将RegExp对象转换为表示正则表达式直接量的字符串。

Javascript中对象到字符串的转换

  • 对象调用toString()方法,返回一个原始值,将这个值转换为字符串,并返回这个字符串结果。如果toString()方法不返回一个原始值,那么Javascript会调用valueOf()方法。返回值是原始值,将这个值转换为字符串。返回这个字符串。两种方法都不能获得一个原始值,因此会抛出一个类型错误异常。

Javascript中对象到数字的转换

  • js做了同样的事情,只不过它先尝试使用valueOf()方法。在使用toString()方法。在转换为数字。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

《数据结构》算法实现及解析

《数据结构》算法实现及解析

高一凡 / 西安电子科技大学出版社 / 2002-10-1 / 35.0

《数据结构算法实现及解析》配有光盘,光盘中包括书中所有程序及用标准C语言改写的程序。所有程序均在计算机上运行通过。《数据结构算法实现及解析》适用于使用教科书的大中专学生和自学者。书中的基本操作函数也可供从事计算机工程与应用工作的科技人员参考和采用。一起来看看 《《数据结构》算法实现及解析》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具