js简介和数据类型

Mar 30, 2017


JS是弱类型编译语言(解释型语言)

编译执行:把代码编译成CPU认识的语言(文件),然后整体的执行。 解析执行:一行一行解析,解析一行执行一行。

JS组成

ECMAScript(前身为欧洲计算机制造商协会) JavaScript的语法规范

DOM(Document Object Model 的简称) JavaScript操作网页上元素的API

BOM(Browser Object Model 的简称) JavaScript操作浏览器部分功能的API

js输出消息的五种方式

  1. alert() 在页面弹出一个对话框,早期JS调试使用。
  2. confirm() 在页面弹出一个对话框, 常配合if判断使用。
  3. console.log() 将信息输入到控制台,用于js调试。
  4. prompt() 弹出对话框,用于接收用户输入的信息。
  5. document.write() 在页面输出信息或标签。

JS注释、CSS注释、HTML注释对比

HTML注释: 是HTML的注释标签,使用<和>是符合HTML标签语法规则的 html中具有判断作用的注释。: 以下代码是通过html注释让不同版本IE浏览器读取不同内容,并让对应浏览器显示或执行。

<h1>您正在使用IE浏览器</h1> 
<!--[if IE 6]>  
<h2>如果IE版本是 6,我将被IE6浏览器显示</h2>  
<![endif]-->  
<!--[if IE 7]>  
<h2>如果IE版本是 7,我将被IE7浏览器显示</h2>  
<![endif]--> 

CSS注释: /* 注释内容 / 通配符 只有IE浏览器可以理解(对其他浏览器都隐藏) 反斜线 如果你希望IE/Win有效而IE/Mac隐藏,可以使用“反斜线”技巧

JS的注释 /* (注释代码块) */ //(注释单行)

变量命名规则

驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc

遵从规则: 1.变量命名必须以字母或是下标符号”_”或者”$”为开头。 2.变量名长度不能超过255个字符。 3.变量名中不允许使用空格,首个字不能为数字。 4.不用使用脚本语言中保留的关键字及保留符号作为变量名。 5.变量名区分大小写。(javascript是区分大小写的语言)。 6.汉语可以作为变量名。但是不建议使用!

数据类型

判断数据类型
typeof(name) 或者 typeof name

  1. 简单数据类型 number、string、 boolean、undefined、null
  2. 复杂数据类型 Object、function、Array、Date、RegExp、Error…….

数据类型介绍

Number

进制

浮点数

数值范围

NaN not a number。不是数字的数字类型。alert(typeof(NaN))//number 一旦程序中出现了NaN,一定是程序中进行了非法的运算操作。 NaN的boolean是false。 NaN和自己都不相等。

isNaN()— 判断某些值是不是数字,,,不喜欢数字、讨厌数字,,,只要遇到数字,就返回false。

  • alert( isNaN( function(){ alert(1) } ) );//true
  • isNaN(“blue”); // true
  • isNaN(NaN);// true
  • alert( isNaN(‘250’) ); //false,内部实现靠的是Number,凡是Number()可以转化的,都返回false. Number() ‘250’ => 250 => false
  • alert( isNaN( [] ) );//false
  • alert(isNaN(true));//false
String

注意:在简单数据类型中,字符串不可变。 str的旧值在内存中不会立刻消失,只能二次赋值,原有的字符在一定时间内被垃圾回收器回收。

如下代码的执行过程是,在内存的栈空间放入str,值为undefined,str指向该地址->执行第二行时,给str赋值,同时undefined被覆盖->执行第三行,在内存中新占用一个地址,放入新值,同时str的指针指向改为新地址。

   var str;
   str = "anc";
   str = "adfsadfasdf";
Boolean

Boolean类型有两个字面量:true和false,区分大小写。(大写不对)

虽然Boolean 类型的字面值只有两个,但 ECMAScript中 所有类型的值都有与这两个 Boolean 值等价的值

true、除0数字、“something”、Object(任何对象)为true false、0 、“”、undefined 、null为false

if判断时会把()内的值强行转换成boolean类型进行判断。

undefined和null

null和undefined有最大的相似性。null == undefined的结果(true)也就更说明这点。但是null ===undefined的结果(false),说明还是有区别的。

undefined:定义了变量,没有给变量赋值(未初始化),变量在内存中是存在的。 null:变量未引用,值为空。也就是在内存中找不到这个变量。一般用于销毁对象。 ‘’:空表示在内存中可以找到这个变量。

在和数字运算时,10 + null结果为:10; 10 + undefined结果为:NaN。

任何数据类型和undefined运算都是NaN; 任何值和null运算,null可看做0运算。

数据类型转换

任何简单类型转换成String(三种)
  1. 变量+“” 或者 变量+“abc” null、undefined会被转化为字符串”null”,”undefined”
  2. String(变量)
  3. 变量.toSting()
    注意: Null和undefined无toString方法。
任何简单类型转换成Number

此转换容易产生NaN,一旦被转换的变量中含有非数字字符,都容易出现NaN

*特别提示: *Boolean类型中:true数值为1;false为0; null的数值类型为0; undefined无数值类型或者为NaN;

  • Number() 数字字符串,转换之后得到的数字。 小数数字字符串,转换之后得到的是原数字。 非数字字符串,转换之后得到是NaN。
  • parseInt() 整数字符串,转换之后得到的整数数字。 数字开头的字符串,转换之后得到的是前边的数字。 非数字开头的字符串,转换之后得到的是NaN。 小数类型的字符串,转换之后取整。
  • parseFloat 整数字符串,转换之后得到的整数数字。 数字开头的字符串,转换之后得到的是前边的数字。 非数字开头的字符串,转换之后得到的是NaN。 小数字符串,转换之后得到的是原数字。
任何简单类型转换成Boolean

任何数据类型都可以转换成boolean类型,所以和以往两个转换不同;

数字和字符串转完之后为true。 undefined、null、0转完之后为false.

  • Boolean()
  • !!变量

操作符

算术运算符 比较运算符 逻辑运算符 赋值运算符

优先级
  1. ()
  2. !、-(负数)、++、– (正数省略+)(一元运算)
  3. *、/、%
  4. +、-(加减二元运算)
  5. <、<=、<、>= (一级逻辑运算)
  6. ==、!=、===、!==、 (二级逻辑运算)
  7. && (三级逻辑运算)
  8.  
  9. ?: (三元运算)
  10. =、+=、-=、*=、/=、%= (赋值运算)

流程控制

注意,switch语句中:

break可以省略,如果省略,代码会继续执行下一个case

switch 语句在比较值时使用的是全等操作符,因此不会发生类型转换 (例如,字符串 “10” 不等于数值 10)。

switch语句执行效率比if(条件1){程序1}else if(条件2){程序2}…else{程序n} 高

数组方法

字符串方法