1.     何为 Jscript

JScript 是一种解释型的、基于对象的脚本语言。

局限性:

1)        不能使用该语言来编写独立运行的应用程序

2)        没有对读写文件的内置支持

3)        只能在某个解释器或 “ 宿主 ” 上运行,如 ASP 、 Internet 浏览器或者 Windows 脚本宿主

JScript 是一种宽松类型语言 , 这意味着我们不必显式定义变量的数据类型。多数情况下, JScript 将根据需要自动进行转换。例如:将数值添加到字符串上时,数值将被转换为字符串(详情见强制转换)。

2.     变量的声明

var count;                 // 变量声明

var count = 0;           // 变量声明 & 初始化

name = "";                // 隐式声明变量 name ,没有使用关键字 var

1)            变量声明之后就置于内存之中,以便后来在脚本中使用

2)            若在 var 语句中变量没有初始化,变量自动取值 undefined ( 注 1)

3)            隐式声明的变量拥有全局范围可见度。当在函数中声明一个变量时,该变量不能用于全局范围,所以函数中声明变量必须使用 var 关键

4)            不能使用未经过声明的变量

5)            声明一个变量并进行初始化,但又不想指定任何特殊值,可以赋值为 null 。

var count = null;

var money = 3 * count;       // money 的值为 0 。

6)            声明一个变量但没有初始化,其值为 undefined

var longth;

var area = 10 * longth;       // area 的值为 NaN ,因为 longth 为 undefined 。

***********************************  
*   JScript 中 null 和 undefined 的主要区别   *

***************************************

---   null 是关键字;

undefined 是 Global 对象的一个属性。

---   null 是对象 ( 空对象 , 没有任何属性和方法 ) ;

undefined 是 undefined 类型的值。

document.writeln(typeof null);                   // 输出 object

document.writeln(typeof undefined);         // 输出 undefined

---   对象模型中,所有的对象都是 Object 或其子类的实例,但 null 对象例外:

document.writeln(null instanceof Object);// 输出 false

---   null“ 等值 (==)” 于 undefined ,但不 “ 全等值 (===)” 于 undefined :

document.writeln(null == undefined);                // 输出 true

document.writeln(null === undefined);             // 输出 false

---    运算时 null 与 undefined 都可以被类型转换为 false ,但不等值于 false :

document.writeln(!null);                                   // 输出 true

document.writeln(!undefined);                         // 输出 true

document.writeln(null==false);                        // 输出 false

document.writeln(undefined==false);              // 输出 false

7)            JScript 是一种区分大小写的语言,因此变量名称 blogjava 和变量名称 blogJava 是不一样的

< 注 1> : undefined

undefined 属性 Global ( 注 2) 对象的一个成员,该属性在脚本引擎初始化后可用。

如果声明了一个变量但没有初始化,该变量的值就是 undefined 。

如果没有声明变量,那么就不能将其与 undefined 进行比较,但是可以将该变量的类型与字符串 "undefined" 进行比较。

*****  undefined 应用示例 *****

var declared;                                    // 声明变量。

if (declared == undefined)                // 测试变量。

document.write("declared has not been initialized.");

if (typeOf(notDeclared) == "undefined")

document.write("notDeclared has not been defined.");

< 注 2> : Global

Global 对象是一个固有对象 ( 注 3) ,把所有全局方法集中在一个对象中。

Global 不能用 new 运算符创建。它在 JScripting 引擎被初始化时创建,并立即使其方法和属性可用。

***** Global 属性 *****

1)        Infinity :返回 Number.POSITIVE_INFINITY 的初始值

POSITIVE_INFINITY 属性返回比在 JScript 中能够表示的最大的数 (Number.MAX_VALUE) 更大的值。

JScript 将 POSITIVE_INFINITY 值显示为 infinity, 该值数学上的作用与正无穷相同。

与之相对, NEGATIVE_INFINITY 属性返回比 JScript 能够表示的最小负数( -Number.MAX_VALUE )更小的值。

JScript 将 NEGATIVE_INFINITY 值显示为 -infinity, 该值数学上的作用与负无穷相同。

可以看出 POSITIVE_INFINITY 和 NEGATIVE_INFINITY 都是 Number 对象的属性, Number 对象最主要的用途是将其属性集中到一个对象中,以及使数字能够通过 toString 方法转换为字符串。

Number 属性

Number 方法

MAX_VALUE

toLocaleString

MIN_VALUE

NaN

toString

NEGATIVE_INFINITY

POSITIVE_INFINITY

valueOf

constructor

prototype

2)        NaN :返回特殊值 NaN ,表示表达式不是数字

相关方法: isNan( numValue )

返回一个 Boolean 值,指明提供的值 (numValue) 是否是保留值 NaN ( 不是数字 ) ,即判断是否为数字。

如果值是 NaN , 那么 isNaN 函数返回 true ,否则返回 false 。
           使用这个函数的典型情况是检查 parseInt 和 parseFloat 方法的返回值。

还有一种办法,变量可以与它自身进行比较。 如果比较的结果不等,那么它就是 NaN 。 这是因为 NaN 是唯一与自身不等的值。

***** Global 方法 *****

Global

方法

escape

eval

isFinite

isNaN

parseFloat

parseInt

unescape

< 注 3> : 固有对象

固有对象是作为标准 JScript 语言一部分的一种对象。所有的脚本都可以使用这种对象。 JScript 中的固有对象:

固有对象

Array

Boolean

Date

Function

Global

Math

Number

Object

RegExp

Regular

Expression

String

3.     强制转换

在 Jscript 中,可以对不同类型的值执行运算, JScript 解释器自动将数据类型之一改变 ( 强制转换 ) 为另一种数据类型,然后执行运算。

运算

结果

数值与字符串相加

将数值强制转换为字符串

布尔值与字符串相加

将布尔值强制转换为字符串

数值与布尔值相加

将布尔值强制转换为数值

***** 强制转换示例 *****

var year = 2008;                 // 一个数字

var hello = "Hello ";             // 一个字符串

hello = hello + year;            // 将数字强制转换为字符串

document.write(hello);        // 输出 Hello 2008

要想显示的将字符串转换为数字可使用方法 parseInt() 和 parseFloat() 。

4.     JScript 的数据类型

Jscript 有三种主要数据类型、两种复合数据类型和两种特殊数据类型。

主要(基本)数据类型: 
      字符串
     数值
     布尔

复合(引用)数据类型: 
       对象 
       数组

特殊数据类型: 
       Null 
       Undefined

1.        字符串

1)        字符串中可以包含双引号,该双引号两边需加单引号,
 字符串中可以包含单引号,该单引号两边需加双引号。

"I’m Ma Jia nan."

'"good good study, day day up", my teacher said.'

2)        JScript 中没有表示单个字符的类型(如 C++ 的 char )。要表示 Jscript 中的单个字符,应创建一个只包含一个字符的字符串。包含零个字符( "" 的字符串是空(零长度)字符串

2.        数值类型

在 Jscript 中整数和浮点值没有差别; JScript 数值可以是其中任意一种( JScript 内部将所有的数值表示为浮点值)。

1)        整型

八进制和十六进制数可以为负,但不能有小数位,同时不能以科学计数法(指数)表示。

2)        JScript 包含特殊值数字: 
NaN( 不是数)。当对不适当的数据进行数学运算时使用,例如字符串或未定义值。 
正无穷大。在JScript中如果一个正数太大的话使用它来表示。 
负无穷大。在JScript中如果一个负数太大的话使用它来表示。 
正0和负0。Jscript区分正0和负0。

3.        boolean

任何值为 0 、 null 、未定义(undefined)或空字符串的表达式被解释为false。其他任意值的表达式解释为true

4.        Null 数据类型

1)        在 Jscript 中数据类型 null 只有一个值: null 。关键字 null 不能用作函数或变量的名称。

2)        包含 null 的变量包含 “ 无值 ” 或 “ 无对象 ” 。换句话说,该变量没有保存有效的数、字符串、 boolean 、数组或对象。

3)        Jscript 中, null 与 0 不相等(与在 C 和 C++ 中不同)。同时应该指出的是, Jscript 中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null 。这点潜在的混淆是为了向下兼容。

5.        Undefined 数据类型

如下情况使返回 undefined 值:

¨        对象属性不存在,

¨        声明了变量但从未赋值。

注意不能通过与 undefined 做比较来测试一个变量是否存在,但可以检查它的类型是否为 “ undefined ” 。在以下的代码范例中,假设程序员想测试是否已经声明变量 x :

//方法不起作用 
      if( x == undefined)
            //do sth
      
   //方法不起作用,必须检查字符串"undefined"
   if(typeof(x) == undefined)
      // do sth

//方法有效
   if(typeof(x) == "undefined")
      //do sth

考虑将 undefined 值与 null 做比较。        
someObject.prop == null;
    
  如下情况时,比较的结果为 true :
       如果属性 someObject.prop 包含 null 值
       如果属性 someObject.prop 不存在
要检查一个对象属性是否存在,可以使用新的 in ( 注 4) 运算符: 
if("prop" in someObject)
//someObject有属性prop

< 注 4> : in 运算符

result propertyinobject

in 操作检查对象中是否有名为 property 的属性。

<to be continued ... ...>

本文转自BlogJavaOo缘来是你oO的博客,原文链接:JavaScript 学习笔记(1),如需转载请自行联系原博主。

JavaScript 学习笔记(1)相关推荐

  1. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  2. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  3. JavaScript学习笔记(五)

    JavaScript学习笔记(五) ①Array类 本地对象 ②Date类 ①Global对象 对象的类型   内置对象 ②Math对象 宿主对象 今天继续学习JS中的对象,昨天内置对象Global对 ...

  4. JavaScript学习笔记(备忘录)

    JavaScript学习笔记(备忘录) ===运算符 判断数值和类型是否相等.如: console.log('s'==='s') //输出trueconsole.log('1'===1) //输出fa ...

  5. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  6. JavaScript学习笔记(十)——学习心得与经验小结

    JavaScript学习笔记(十)--学习心得与经验小结 目前我先列好提纲,利用每晚和周末的闲暇时间,将逐步写完 ^_^ 转载于:https://www.cnblogs.com/mixer/archi ...

  7. 前端获取div里面的标签_web前端教程JavaScript学习笔记DOM

    web前端教程JavaScript学习笔记 DOM一DOM(Document Object Model): 文档对象模型 其实就是操作 html 中的标签的一些能力 我们可以操作哪些内容 获取一个元素 ...

  8. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

  9. JavaScript学习笔记(七)——厚积薄发之小成果

    JavaScript学习笔记(七)--厚积薄发之小成果 目前我先列好提纲,利用每晚和周末的闲暇时间,将逐步写完 ^_^ 转载于:https://www.cnblogs.com/wdpp/archive ...

最新文章

  1. 微服务已过时!DDD领域建模与架构设计才是未来!
  2. 设置html初始值0,数组怎么初始化?
  3. php array_merge 与 + 区别
  4. Manthan, Codefest 16
  5. linux基础_centos安装与网络配置
  6. java字节码指令集简介
  7. linux g++ 链接,Linux G++将64位共享库代码链接到静态库
  8. Linux 网页交互、curl
  9. java中用socket实现简单的单工通信
  10. 0x800700b7 linux,0x800700b7解决方法
  11. 对DllRegisterServer的调用失败,错误代码为0x80020009
  12. Django--表单
  13. cad批量等高线lisp_基于AutoCAD Lisp局部等高线自动内插新方法
  14. 构筑城市生命线:应急管理需要新思路,全域能力成关键
  15. 网页布局颜色搭配布局总结
  16. XV6源代码阅读-虚拟内存管理
  17. 亨登谈判策略(转载)
  18. OpenCV开发笔记(四十五):红胖子8分钟带你深入了解重映射(图文并茂+浅显易懂+程序源码)
  19. web前端三大主流框架是什么?
  20. 使用 Go 构建 Kubernetes 应用

热门文章

  1. vmware中系统开机黑屏_macOS Catalina系统Vmware Fusion虚拟机黑屏问题的解决过程
  2. 被低估的css滤镜,你所不知道的 CSS 滤镜技巧与细节
  3. 七牛上传图片html,使用七牛云上传图片
  4. 正则表达式的含义php,求正则表达式含义
  5. nginx 反向代理跨域访问配置_nginx反向代理配置去除前缀
  6. python程序设计实验报告实验程序流程序列化_Python使用pickle模块实现序列化功能示例...
  7. 【杂谈】如何在言有三本人的随时答疑下, 长期而系统地学习深度学习和计算机视觉,这是有三AI的完整计划...
  8. 《面向对象程序设计》第07章在线测试
  9. 《微机原理及接口技术》第05章在线测试
  10. 怎样成为精力管理的高手