资讯专栏INFORMATION COLUMN

高程3总结#第3章基本概念

Rindia / 1265人阅读

摘要:基本概念语法区分大小写,中的一切变量函数名和操作符都区分大小写。要将一个值转换成对应的值,可以调用类型包括整数和浮点数值,基本数值字面量格式是十进制整数,除了十进制外还有八进制十六进制。八进制第一位必须是,十六进制第一位必须是。

基本概念 语法

区分大小写,ECMAScript中的一切(变量、函数名和操作符)都区分大小写。函数名不能使用typeof,因为它是一个关键字,但typeOf可以。

标识符,指的是变量、函数、属性的名字,或者函数的参数。第一个字符必须是一个字母、下划线或者$符号。不能将关键字、保留字、true、false和null用作标识符。

注释,包括单行注释和跨级注释。单行注释以两个斜杆开头,块级注释以一个斜杠和一个星号开头,以一个星号和一个斜杠结尾。

严格模式为JavaScript定义了一种不同的分析与执行模式。

function doSomething(){
  "use stric";
  //函数体
};

语句以一个分号结尾,如果省略分号,则由解析器确定语句的结尾。

关键字和保留字

关键字可用于表示控制语句的开始或者结束,或者用于执行特定操作等。 关键字是语言保留的,不能用作标识符。

变量

变量是松散型的,可以保存任何类型的数据。定义变量的时候要使用var操作符。

数据类型

typeof操作符。"undefined"这个值未定义、"boolean"这个值是布尔值、"string"这个值是字符串、"number"这个值是数值、"object"这个值是对象或者null、"function"这个值是函数。

Undefined类型只有一个值,就是特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。一般不存在需要把一个变量设置为undefined的情况,字面值undefined的主要目的是用于比较。

var message;//这个变量声明之后默认取得了undefined值
//下面这个变量并没有声明
//var age
alert(message);//"undefined"
alert(age);//报错
alert(typeof message);//"undefined"
alert(typeof age);//"undefined"

Null类型只有一个值,就是特殊的null,从逻辑角度看,null值是一个空对象指针,因此用typeof操作符检测null值时会返回"object"。undefined是派生自null的。

alert(null==undefined);//true

Boolean类型有两个值,true和false。要将一个值转换成对应的Boolean值,可以调用Boolean()

Number类型包括整数和浮点数值,基本数值字面量格式是十进制整数,除了十进制外还有八进制十六进制。八进制第一位必须是0,十六进制第一位必须是0x。

浮点数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。保存浮点数值需要的内存空间是保存整数的两倍。

ECMAScript 能够表示的最小数值保存在Number.MIN_VALUE中,在大多数浏览器中,这个值是5e-324

能够表示的最大数值保存在Number.MAX_VALUE中——在大多数浏览器中,这个值是1.7976931348623157e+308。

如果某次计算的结果得到了一个超出JavaScript数值范围的值,那么这个数值将被自动转换成特殊的Infinity值。

具体来说,如果这个数值是负数,则会被转换成-Infinity负无穷,如果这个数值是正数,则会被转换成Infinity正无穷。

NaN是一个特殊数值,任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等,包括NaN本身。

alert(isNaN(NaN))//true
alert(isNaN(10))//false
alert(isNaN("10"))//false
alert(isNaN("blue"))//true
alert(isNaN(true))//false

三种函数可以把非数值转换成数值,Number()、parseInt()、parseFloat()

var num1=Number("Hello world!")//NaN
var num2=Number("")//0
var num3=Number("000011")//11
var num4=Number(true)//1
var num5=parseInt("1234blue"); // 1234
var num6=parseInt(""); // NaN
var num7=parseInt("0xA"); // 10(十六进制数)
var num8=parseInt(22.5); // 22
var num9=parseInt("070"); // 56(八进制数)
var num10=parseInt("70"); // 70(十进制数)
var num11=parseInt("0xf"); // 15(十六进制数)
var num12=parseInt("AF", 16); //175
var num13=parseInt("AF"); //NaN
var num14=parseInt("10", 2); //2 (按二进制解析)
var num15=parseInt("10", 8); //8 (按八进制解析)
var num16=parseInt("10", 10); //10 (按十进制解析)
var num17=parseInt("10", 16); //16 (按十六进制解析)
var num18=parseFloat("1234blue"); //1234 (整数)
var num19=parseFloat("0xA"); //0
var num20=parseFloat("22.5"); //22.5
var num21=parseFloat("22.34.5"); //22.34
var num22=parseFloat("0908.5"); //908.5
var num23=parseFloat("3.125e7"); //31250000

String类型用于表示由零或多个16位Unicode字符组成的字符序列,字符串。可以用单引号或者双引号表示,没有区别。

字符字面量,也叫转义序列

字符串一旦创建就不可改变。

将一个值转换为字符串有两种方法,toString()、String(),null和undefined没有toString方法

var age = 11;
var ageAsString = age.toString(); // 字符串"11"
var found = true;
var foundAsString = found.toString(); // 字符串"true"
var num = 10;
alert(num.toString()); // "10"
alert(num.toString(2)); // "1010"
alert(num.toString(8)); // "12"
alert(num.toString(10)); // "10"
alert(num.toString(16)); // "a"
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"

Object类型可以通过new创建,是一组数据和功能的集合。

var o=new Object();

操作符

一元操作符,只能操作一个值的操作符:递增递减操作符、一元和加减操作符

var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2; // 等于 21
var num4 = num1 + num2; // 等于 21
var s1 = "2";
var s2 = "z";
var b = false;
var f = 1.1;
var o = {
  valueOf: function() {
    return -1;
  }
};
s1++; // 值变成数值 3
s2++; // 值变成 NaN
b++; // 值变成数值 1
f--; // 值变成 0.10000000000000009(由于浮点舍入错误所致)
o--; // 值变成数值-2
var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
  valueOf: function() {
      return -1;
  }
};
s1 = +s1; // 值变成数值 1
s2 = +s2; // 值变成数值 1.1
s3 = +s3; // 值变成 NaN
b = +b; // 值变成数值 0
f = +f; // 值未变,仍然是 1.1
o = +o; // 值变成数值-1
var s1 = "01";
var s2 = "1.1";
var s3 = "z";
var b = false;
var f = 1.1;
var o = {
  valueOf: function() {
      return -1;
  }
};
s1 = -s1; // 值变成了数值-1
s2 = -s2; // 值变成了数值-1.1
s3 = -s3; // 值变成了 NaN
b = -b; // 值变成了数值 0
f = -f; // 变成了-1.1
o = -o; // 值变成了数值 1

位操作符,32位整数。对于有符号的整数,前31位用于表示整数的值,第32位用于表示数值的符号,0表示正数,1表示负数。按位非,用波浪线(~)表示,执行按位非的结果就是返回数值的反码。按位与,用&表示。按位或,由竖线表示。按位异或,由^符号表示。左移(<<)。右移(>>)。无符号右移(>>>)

  var num1 = 25; // 二进制 00000000000000000000000000011001
  var num2 = ~num1; // 二进制 11111111111111111111111111100110
  alert(num2); // -26
  var num1 = 25;
  var num2 = -num1 - 1;
  alert(num2); // "-26"
  var result = 25 & 3;
  alert(result); //1
  25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
  ---------------------------------------------
  AND = 0000 0000 0000 0000 0000 0000 0000 0001
  var result = 25 | 3;
  alert(result); //27
  25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
  --------------------------------------------
  OR = 0000 0000 0000 0000 0000 0000 0001 1011
  var result = 25 ^ 3;
  alert(result); //26
  25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
  ---------------------------------------------
  XOR = 0000 0000 0000 0000 0000 0000 0001 1010
  var oldValue = 2; // 等于二进制的 10
  var newValue = oldValue << 5; // 等于二进制的 1000000,十进制的 64
  var oldValue = 64; // 等于二进制的 1000000
  var newValue = oldValue >> 5; // 等于二进制的 10 ,即十进制的 2
  var oldValue = 64; // 等于二进制的 1000000
  var newValue = oldValue >>> 5; // 等于二进制的 10 ,即十进制的 2

布尔操作符,逻辑非(!)、逻辑与(&&)、逻辑或(||)

  alert(!false); // true
  alert(!"blue"); // false
  alert(!0); // true
  alert(!NaN); // true
  alert(!""); // true
  alert(!12345); // false
  alert(!!"blue"); //true
  alert(!!0); //false
  alert(!!NaN); //false
  alert(!!""); //false
  alert(!!12345); //true
  var found = true;
  var result = (found && someUndefinedVariable); // 这里会发生错误
  alert(result); // 这一行不会执行
  var found = true;
  var result = (found || someUndefinedVariable); // 不会发生错误
  alert(result); // 会执行("true")

乘性操作符,乘法(*)、除法(/)、求模(%)

加性操作符,加法,减法

  var result1 = 5 + 5; // 两个数值相加
  alert(result1); // 10
  var result2 = 5 + "5"; // 一个数值和一个字符串相加
  alert(result2); // "55"
  var result1 = 5 - true; // 4,因为 true 被转换成了 1
  var result2 = NaN - 1; // NaN
  var result3 = 5 - 3; // 2
  var result4 = 5 - ""; // 5,因为"" 被转换成了 0
  var result5 = 5 - "2"; // 3,因为"2"被转换成了 2
  var result6 = 5 - null; // 5,因为 null 被转换成了 0

关系操作符,返回布尔值。"23"和3比较,"23"小于3。

相等操作符,相等(==)、不相等(!=)、全等(===)、不全等(!==)

条件操作符,var max = (num1 > num2) ? num1 : num2;如果num1大于num2,则将num1的值赋给max,如果num1小于或等于num2,则将num2的值赋给max

赋值操作符

逗号操作符,多用于声明多个变量,还可用于赋值。var num=(5,4,3);//num值为3

函数

通过访问argument对象的length属性可以获知有多少个参数传递给了函数。函数没有重载,名字只属于后定义的函数

  function howManyArgs() {
      alert(arguments.length);
  }
  howManyArgs("string", 45); //2
  howManyArgs(); //0
  howManyArgs(12); //1

  function doAdd() {
    if(arguments.length == 1) {
      alert(arguments[0] + 10);
    } else if (arguments.length == 2) {
      alert(arguments[0] + arguments[1]);
    }
  }
  doAdd(10); //20
  doAdd(30, 20); //50

  function addSomeNumber(num){
      return num + 100;
  }
  function addSomeNumber(num) {
      return num + 200;
  }
  var result = addSomeNumber(100); //300

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97436.html

相关文章

  • 高程3总结#8BOM

    摘要:对象的核心对象是,它表示浏览器的一个实例。而和则表示该容器中页面视图区的大小。在中,与返回相同的值,即视口大小而非浏览器窗口大小。第三个参数是一个逗号分隔的设置字符串,表示在新窗口中都显示哪些特性。这应该是用户打开窗口后的第一个页面 BOM window对象 BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过JavaScript访...

    MASAILA 评论0 收藏0
  • 高程3总结#4变量、作用域和内存问题

    摘要:当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。这样,一直延续到全局执行环境全局执行环境的变量对象始终都是作用域链中的最后一个对象。 变量、作用域和内存问题 基本类型和引用类型的值 基本类型值指的是简单的数据段,而引用类型值值那些可能由多个值构成的对象。 定义基本类型值的引用和引用类型值的方法是类似的,创建...

    xumenger 评论0 收藏0
  • 高程3总结#20JSON

    摘要:语法语法可以表示三种类型的值简单值使用与相同的语法,可以在中表示字符串数值布尔值和。对象对象作为一种复杂数据类型,表示的是一组无序的键值对儿。如果字符串长度超过了个,结果中将只出现前个字符。 JSON 语法 JSON语法可以表示三种类型的值 简单值:使用与 JavaScript 相同的语法,可以在 JSON 中表示字符串、数值、布尔值和 null 。但 JSON 不支持 JavaS...

    Hwg 评论0 收藏0
  • 高程3总结#7函数表达式

    摘要:匿名函数可以用来模仿块级作用域来避免这个问题这里是块级作用域代码定义并立即调用了一个匿名函数,将函数声明包含在一对圆括号中,表示它实际上是一个函数表达式,而紧随其后的另一对圆括号会立即调用这个函数。 函数表达式 递归 递归函数是在一个函数通过名字调用自身的情况下构成的 function factrial(num){ if(num

    sevi_stuo 评论0 收藏0
  • 高程3总结#1JavaScript简介

    摘要:简介简史诞生于年,当时主要负责表单的输入验证。实现一个完整的由三部分组成核心文档对象模型浏览器对象模型就是对实现该标准规定的各个方面内容的语言的描述。把整个页面映射为一个多层节点结构。由万维网联盟规划。主要目标是映射文档的结构。 JavaScript简介 JavaScript简史 JavaScript诞生于1995年,当时主要负责表单的输入验证。 如果没有表单验证的功能,填入信息之...

    betacat 评论0 收藏0

发表评论

0条评论

Rindia

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<