js基础

来源:互联网 发布:建筑绘图软件 编辑:程序博客网 时间:2024/06/06 09:26
 

类型、值

 

1.数字、字符串、布尔值

2 函数、对象、数组

3Null和 undefined

4Date对象和Error对象

5 类型转换

6 全局对象

                                   部分为参考别人代码  部分为自己原创

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                         

 

 

一 、数字

1.数字(number)是最基本的数据类型,

javascript不区别整型数值和浮点型数值。

javascript采用IEEE 754标准定义的64位浮点格式表示数字。

数字表示最大值是:2^1024约等于1.7976931348623157*10^308

最小值是:2^(-52)*2^(-1022)约等于5*10^(-324)。

2 浮点型直接量

JavaScript只有一种数字类型:浮点型;

JavaScript的数字可以用小数点写也可以不用,

例子:

  var  a= 3.14  //使用小数点

  var   b=  3    // 不使用小数点

   var  x =123e5  //12300000     123*10 的5次幂

   var y = 123e-5       // .0.00123  123* 10的-5次幂

   

3.八进制和十六进制

     如果前缀为 0,则JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。

 例:

  var y=0377;  //  八进制      var z=0xFF;// 十六进制

 

*注:绝不要在数字前面写零,除非您需要进行八进制转换

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、字符串

 

1.JavaScript 字符串用于存储和处理文本,字符串可以是插入到引号中的任何字符。你可以使用单引号或双引号.

 例:

   var carname = "Volvo XC60";

   var carname = 'Volvo XC60';

 你可以在字符串中使用引号,字符串中的引号不要与字符串的引号相同:

  例:

      var answer = "It's alright";

var answer ="He is called 'Johnny'";

var answer = 'Heis called "Johnny"';

你也可以在字符串添加转义字符来使用引号(\):

    (转义字符反斜杠后加字符,可以表示字符串中无法出现的字符)

   例:

   var x = 'It\'s alright';   //It's alright

var y = "Heis called \"Johnny\"";   //Heis called "Johnny"

2.字符串 长度

 可以使用内置属性 length 来计算字符串的长度:

  例:

 <script>

var txt ="Hello World!";

document.write("<p>"+ txt.length + "</p>");  //12

vartxt="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

document.write("<p>"+ txt.length + "</p>"); // 26

</script>

 

 

 

 

 

3.数字转换字符

   1.要把一个数字转换为字符串,只要给它添加一个空的字符串即可;

 例:

       var  n_as_string = n + "" ;

可以使用string()函数;

例:

     varstring _ value=  String(number);

使用toString()方法:

     string _ value=number.toString();

 

4   indexOf 查找字符串位置(查不到显示-1)

列:

var str ="Hello World"

document.write(str.indexOf("Hello"));//0

document.write(str.indexOf("")) //5

5  内容匹配( 匹配字符串是否存在   存在显示字符串 不存在显示null):match()  

  document.write(str.match( "World")); //

6替换内容(replace)

 document.write(str.replace("World","123")); //  Hello 123

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、布尔值

  1. Boolean 类型值 (true 或者false). 一个布尔值代表一个“真值”,它说明了某个事物是真的还是假的  

例子:

  if(a==4)   //判断a是否等于4

       b= b+1; //如果相等 b就增加1

else

  a = a+1;  // 否则a加1

2. 布尔类型转换

       如果布尔用在数值环境中,  true 就转换成数字1,false 就转换为数字0. 

       如果布尔值用在字符串环境中,true 就转换为字符串“true”, false 就转换为 字符串 “false”

 

 

四 函数

JavaScript 使用关键字 function 定义函数,函数可以通过声明定义,也可以是一个表达式。

   1. 定义函数(function)

     function 函数名(){

           函数体();  //代码块

}

注 (function) 必须是小写。

函数表达式

JavaScript 函数可以通过一个表达式定义。

函数表达式可以存储在变量中:

列:

var x =function (a, b) {return a * b}; //function (a, b) {return a * b}

自调用函数

函数表达式可以"自调用"。

自调用表达式会自动调用。

如果表达式后面紧跟 (),则会自动调用。

不能自调用声明的函数。

通过添加括号,来说明它是一个函数表达式:

<pid="demo"></p>

<script>

(function (){

   document.getElementById("demo").innerHTML = "Hello! 我是自己调用的";  //Hello! 我是自己调用的

})();

</script>

 

函数可作为一个值使用

JavaScript 函数作为一个值使用:

<pid="demo">12</p>

<script>

functionmyFunction(a, b) {

    return a * b;

}

var x =myFunction(4, 3);

document.getElementById("demo").innerHTML= x;      // 12

</script>

 

 

 

 

五 对象

 JavaScript中的所有事物都是对象:字符串、数值、数组、函数...

所有事物都是对象

JavaScript 提供多个内建对象,比如 String、Date、Array 等等。对象只是带有属性和方法的特殊数据类型。

l 布尔型可以是一个对象。

l 数字型可以是一个对象。

l 字符串也可以是一个对象

l 日期是一个对象

l 数学和正则表达式也是对象

l 数组是一个对象

l 甚至函数也可以是对象

此外,JavaScript 允许自定义对象

 自定义对象:

1. 定义并创建对象实例

2. 使用函数定义对象,然后创建新的对象实例

 例1:

1  people = new Object(); //创建people对象

  people .name= "ac"            

  people.age="15"

 document.write("name:"+people.name+",age:"+people.age);//name:ac age:15

2

people={name:"ic",age:"15"};

document.write("name:+people.name+",age:"+people.age");//name:ac age:15

 

 

例2:

  function People(name,age){

  this.name=name

  this.age=age

}

son =new people("ac","15")

document.write("name:+son.name+",age:"+son.age");//name:ac age:15

 

 

 

六 数组

1.   数组对象是使用单独的变量名来存储一系列的值。

  数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。

 数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。

 

2.  创建一个数组

        创建一个数组,有三种方法。

下面的代码定义了一个名为 myCars的数组对象:

1: 常规方式:

var myCars=newArray();

myCars[0]="Saab";      

myCars[1]="Volvo";

myCars[2]="BMW";

2: 简洁方式:

var myCars=newArray("Saab","Volvo","BMW");

3: 字面:

var myCars=["Saab","Volvo","BMW"];

 

 *索引值 0是第一个 1是第二个

 

 

 

 

 

 

 

 

 

 

六 null和 undefined

Null

在 JavaScript中 null 表示 "什么都没有"。

null是一个只有一个值的特殊类型。表示一个空对象引用。

*用typeof检测 null 返回是object。

你可以设置为 null 来清空对象:

var person =null;           // 值为 null(空), 但类型为对象

你可以设置为 undefined来清空对象:

var person =undefined;     // 值为 undefined, 类型为 undefined

Undefined

在 JavaScript中, undefined是一个没有设置值的变量。

typeof 一个没有值的变量会返回undefined

varperson;                 // 值为 undefined(空), 类型是undefined

任何变量都可以通过设置值为 undefined 来清空。 类型为undefined.

person =undefined;          // 值为 undefined, 类型是undefined

Undefined和 Null 的区别

实例

null 和 undefined 的值相等,但类型不等:

typeofundefined            // undefined

typeofnull                 // object

null ===undefined           //false   (类型)

null ==undefined            //true

 

 

 

 七、Date对象

          Date 对象用于处理日期和时间。

      创建 Date 对象的语法:

  var date=new Date()  ;

 document.write(ate())  ;     // 获取当日的日期

        document.write(date.getFullYear());  //   获取年份

       date.setfullYear(2010.1.1);  //自定义日期

        document..write(date);    //  打印日期

  

 

 

八 error对象

一、什么是错误处理?

在介绍Error对象之前,先说说什么是错误处理。错误,指程序中非正常运行状态,在其他编程语言中称为"异常"或"错误",解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描述信息。通过使用JS提供的异常错误语句,可以用结构化的方式来捕捉发生的错误,让异常处理代码与核心业务代码实现分离,最终使我们能够集中精力编写主业务功能代码。简言之:在程序执行过程中,即使程序出错,也能保证不会异常中断的机制。

 

二、JS种的错误的类型(6种)

1.SyntaxError:语法错误

2.ReferenceError:引用错误 要用的东西没找到

3.RangeError:范围错误  专指参数超范围

4.TypeError:类型错误  错误的调用了对象的方法

5.EvalError: eval()方法错误的使用

6.URIError: url地址错误

 

前4种是我们开发的时候经常遇到,需要熟练记住,后两种比较少见,了解即可。

 

 

三、Error对象

Error:封装错误信息的对象,在发生错误时,自动创建两个属性:

err.name :错误的名称/错误的类型

err.message: 错误的提示信息

 

如何使用:

 

try{

        可能出现错误的语句

}catch(err){

//err:自动获得错误对象——不可省略

        一旦出错,才执行的错误处理代码: 提示错误, 记录日志

}finally{

        无论是否出错,都必须执行的代码: 释放资源

}

 

 

 

 

 

 

 

九 类型转换

Number() 转换为数字,String() 转换为字符串, Boolean() 转化为布尔值。

JavaScript数据类型

在 JavaScript中有 5 种不同的数据类型:

l string(字符串)

l number(数字)

l boolean(布尔值)

l object(对象)

l function(函数)

3 种对象类型:

l Object(对象)

l Date(日期)

l Array(数组)

2 个不包含任何值的数据类型:

l null(空)

l undefined(没找到值)

 

typeof操作符

你可以使用 typeof 操作符来查看 JavaScript 变量的数据类型。

例:

typeof"John"                // 返回 string

typeof3.14                  // 返回 number

typeof NaN                  // 返回 number

typeoffalse                 // 返回 boolean

typeof[1,2,3,4]              //返回 object

typeof{name:'John', age:34}  // 返回 object

typeof newDate()            // 返回 object

typeoffunction () {}         // 返回 function

typeofmyCar                 // 返回 undefined (如果 myCar 没有声明)

typeofnull                  // 返回 object

 

 

 

 

   *    NaN 的数据类型是 number

数组(Array)的数据类型是 object

日期(Date)的数据类型为 object

null的数据类型是 object

未定义变量的数据类型为 undefined

如果对象是 JavaScript Array或 JavaScript Date ,我们就无法通过typeof 来判断他们的类型,因为都是 返回 Object。

constructor属性

constructor 属性返回所有 JavaScript 变量的构造函数。

"John".constructor                // 返回函数 String()  { [native code] }

(3.14).constructor                // 返回函数 Number()  { [native code] }

false.constructor                 // 返回函数 Boolean() { [native code] }

[1,2,3,4].constructor             // 返回函数 Array()   { [native code] }

{name:'John',age:34}.constructor  // 返回函数 Object()  {[native code] }

newDate().constructor            // 返回函数 Date()    { [native code] }

function (){}.constructor         // 返回函数 Function(){ [native code] }

JavaScript类型转换

 

JavaScript 变量可以转换为新变量或其他数据类型:

l 通过使用 JavaScript 函数

l 通过 JavaScript 自身自动转换

将数字转换为字符串

全局方法 String() 可以将数字转换为字符串。

该方法可用于任何类型的数字,字母,变量,表达式:

String(x)         //将变量 x 转换为字符串并返回

String(123)      // 将数字 123 转换为字符串并返回

String(100 +23)  // 将数字表达式转换为字符串并返回

将布尔值转换为字符串

全局方法 String() 可以将布尔值转换为字符串。

String(false)       // 返回 "false"

String(true)        // 返回 "true"

Boolean 方法toString() 也有相同的效果。

false.toString()    // 返回 "false"

true.toString()     // 返回 "true"

将日期转换为字符串

Date() 返回字符串。

Date()     // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W.Europe Daylight Time)

全局方法String() 可以将日期对象转换为字符串。

String(newDate())      // 返回 Thu Jul 17 201415:38:19 GMT+0200 (W. Europe Daylight Time)

Date 方法toString() 也有相同的效果。

例:obj = new Date()

obj.toString()   //返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W.Europe Daylight Time)

将字符串转换为数字

全局方法 Number() 可以将字符串转换为数字。

字符串包含数字(如 "3.14") 转换为数字 (如 3.14).

空字符串转换为 0。

其他的字符串会转换为NaN (不是个数字)。

Number("3.14")   // 返回 3.14

Number("")       // 返回 0

Number("")       // 返回 0

Number("9988")   // 返回 NaN

将布尔值转换为数字

全局方法 Number() 可将布尔值转换为数字。

Number(false)    // 返回 0

Number(true)     // 返回 1

将日期转换为数字

全局方法 Number() 可将日期转换为数字。

d = newDate();

Number(d)         // 返回 1404568027739

日期方法 getTime() 也有相同的效果。

d = newDate();

d.getTime()       // 返回 1404568027739

 

 

 

 

 

全局对象

javascript中的全局对象,全局对象是一个父级的构造,所有的其他的对象,变量和函数都属于全局对象。(还有一种是Object对象,javascript中的其他对象都是从Object继承而来,包括内置对象。)

1 全局对象的特性

l 全局对象只是一个对象,而不是类。既没有构造函数,也无法实例化一个新的全局对象。

l 全局对象不是任何对象的属性,所以它没有名称。

l 全局对象是预定义的对象,作为 JavaScript 的全局函数和全局属性的占位符。

在顶层 JavaScript 代码中,可以用关键字 this 引用全局对象。

l 全局对象是作用域链的头,意味着在顶层 JavaScript 中声明的所有变量都将成为全局对象的属性。

l 通常不必用 this 引用全局对象,因为所有非限定性的变量和函数名都会作为全局对象的属性来查询。

l 通过使用全局对象,可以访问所有其他预定义的对象、函数和属性。

l 全局对象的预定义属性都是可枚举的,所以可以用 for/in 循环列出所有隐式或显式声明全局变量

  全局对象是顶层的上下文环境,其他所有对象都属于全局对象。在web开发中,全局对象为作用域提供了最顶层的上下文环境,并为web开发所依赖的某些高层浏览器功能提供了共享的平台。除此之外,全局对象还包括以下内容:

l javascript中所有内置的对象

l javascript中常用的内置属性

l javascript中某些内置函数

l 某些特定的浏览器对象,例如document和window对象

  对于作用域,全局对象也提供了非常有用的功能。当引用一个变量时,在当前作用域中并未找到该变量时,解释器就会沿着作用域链向上移动,并沿着作用域链查找该变量,直到查到全局对象。如果始终无法找到该变量,解释器会认为该变量不存在,并触发一个异常,当在全局作用域中时,可以使用关键字this访问全局对象。

2 浏览器中的全局对象

  在浏览器中,全局对象有着特殊的用途。除保存javascript中所有普通功能和作为全局上下文环境外,还容纳了大量特定于浏览器的对象。例如window和document对象。window对象很有意思,window属性是一个自引用的成员。既可以通过window.property访问变量,也可以简单的使用property来访问变量。这是因为javascript具有一个全局对象,同时又具有一个本质上与其相同的window对象。

  在浏览器中,每个窗口,iFrame和选项卡都具有自己唯一的全局对象。在某些情况下,可以通过DOM在这些作用域之间进行通信,但在通常情况下这些作用域都是相互独立和隔离的。

 

 

 

 

 

 

 

 

 

 

 

js运行时内置了一个Global对象

这个Global对象跟运行环境有关。在浏览器运行环境中。Global就是window对象。

当你在浏览器环境中,直接使用一个未经定义的变量,

例如foo=123;那么foo这个变量自动声明为全局变量。变量引用自动挂载到了Global对象,即window对象上。

Global对象上的属性和函数都是js运行时提供的。例如escape\encodeURIComponent\decodeURIComponent\Regex\Infinite等等。。。

跟继承没有关系,你可以认为浏览器默认提供给你使用的对象,都放到了Global对象中,而window对象又恰好就是这个Global对象。实际上,在浏览器的内部实现中,隐藏了真正的Global对象,而把window对象作为了Global对象的替身。一切对Global对象的操作(间接操作),都会映射到window对象上,反之亦然。这样window对象就成了Global对象的替身。而window对象同时又作为Global对象的一个属性。这样,真正的Global对象就被隐藏了。

window对象虽然是浏览器环境下的jsGloabl对象。但并不意味着window对象下的所有方法和属性都是js原生提供的。原生对象只有很少一部分,浏览器环境中,大量的功能都是由宿主对象完成的。

代码如下:

 

var strict = (function(){return!this;}());

 

如果在JavaScript程序中创建了全局变量,那么这个全局变量会成为全局对象中的一个属性。

代码如下:

 

var a = this;

console.log(a);//window object

console.log(a.outerWidth);//accesswindow object's attribute

console.log(a.isNaN);//access JSglobal object's attribute

x = "test";

console.log(a.x);//access newlycreated global variable value

原创粉丝点击