Javascript学习笔记一

2019-09-09 郑州网站建设  

原始值(primitive value) 是存储在栈(stack)中的简单数据段,也就是说,他们的值直接存储在变量的访问的位置。(ECMAScript有五种原始类型:Undefined、Null、Boolean、Number和String。)

引用值(reference value) 是存储在堆(heap)中的对象,也就是说存储的值是一个指针(point),指向存储对象的内存处。(对象,数组函数属于引用类型)

1)数字 2)字符串

数字转换字符串:

var i = 138;//三种办法var s1 = i + '';var s2 = String(i);var s3 = i.toString();console.日志(typeof(i)); //numberconsole.日志(typeof(s1)); //stringconsole.日志(typeof(s2)); //stringconsole.日志(typeof(s3)); //string//二进制、八进制、十六进制var s4 = i.toString(2);var s5 = i.toString(8);var s6 = i.toString(16);console.日志(s4); //10001010console.日志(s5); //212console.日志(s6); //8a

字符串转换数字:

var s = '22 years old';var i = s - 0; //注:给一个字符串加0则导致字符串连接var j = Number(i);var k = parseInt(s); var l = parseFloat(s);console.日志(typeof(s)); //stringconsole.日志(typeof(i)); //numberconsole.日志(typeof(j)); //number

parseInt和parseFloat可以从字符串开始处转换和返回任何数字,忽略或舍去非数字部分。parseInt只截取整数,parseFloat截取整数和浮点数。如果是以0x或0X开头,parseInt将其解释为16进制数字。

字符串链接用+号:

var longString = 'here is the strory, of a ' + 'man named bingdian.' 3)布尔值 4)null

null是一个特殊值,在下列场景应使用null:

用来初始化一个变量,这个变量可能赋值为一个对象

用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象

当函数的参数期望是对象时,用作参数传入

当函数的返回值期望是对象时,用作返回值传出

下面的场景不应当使用null:

不要用null来检测是否传入了某个参数

不要用null来检测一个未初始化的变量

示例代码:

// 好的用法var person = null;// 好的用法function getPerson() { if ( condition ) { return new Person('bingdian'); } else { return null; }}// 好的用法var person = getPerson();if ( person !=== null ) { doSomething();}// 不好的用法,用来和未初始化的变量比较var person;if ( person != null ) { doSomething();}// 不好的用法 ,检测是否传入了参数function doSomething(arg1, arg2, arg3, arg4) { if ( arg4 != null ) { doSomethingElse(); }}

理解null的最好的方式是将它当做是对象的占位符(placeholder)。

5)undefined

undefined是一个特殊值,容易和null搞混,undefined == null为true,这两个值的用途各不相同。

没有被初始化的变量都有一个初始值,即undefined,表示这个变量等待被赋值。

//不好的写法var person;console.日志(person === undefined);//true

尽管这段代码能正常工作,但建议避免在代码中使用undefined。这个值常常和返回"undefined"的typeof运算符混淆。typeof不管理undefined的变量还是未声明的变量,运算结果都是"undefined":

//foo未声明var person;console.日志(typeof person); //"undefined"console.日志(typeof foo); //"undefined"

通过禁止使用特殊值undefined,可以确保只有一种情况下typeof才会返回"undefined":当变量未声明时。

6)函数 7)对象 8)数组 9)Date对象 10)正则表达式 11)Error对象 二、变量 1)变量声明

变量用关键词var来声明,如:

var i, num, a, b, name ='bingdian';

var关键词声明的变量是永久的,用delete运算符删除这些变量将会引发错误。

x = 1;delete x;console.日志(x); //x is not defined

javascript的变量类型是松散类型的,可以用来保存任何数据类型,可以在修改变量值的同时修改变量类型:

var answer = 10;x = 'The answer is ' + 10y = 10 + ' is the answer'console.日志(x); // The answer is 10console.日志(y); // 10 is the answervar a = '17' - 8; //9var b = '17' + 8; //178console.日志(a);console.日志(b);

使用一个未声明的变量,会引发错误。

2)变量作用域 ###

变量的作用域是程序中定义这个变量的区域。函数内声明的变量只在函数内部起作用(声明局部变量一定要使用var关键词声明)。

在函数内部,局部变量作用域优先级高于同名全局变量,例:

var i = 99;var foo = function() { var i = 10; console.日志(i);}foo(); //10 使用局部变量console.日志(i); //99 使用全局变量

声明局部变量一定要使用var关键词,使用var关键词声明变量时,变量会自动添加到距离最近的可用环境中。如果没有写var, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突. 另外, 如果没有加上, 很难明确该变量的作用域是什么, 变量也很可能像在局部作用域中, 很轻易地泄漏到 Document 或者 Window 中, 所以务必用var去声明变量。例:

var a = 3;var foo = function() { a = 10; b = 22; console.日志(a); console.日志(b);}foo(); //10 22console.日志(a); //10console.日志(b); //22
河南郑州做网站首选天择文化,我们专注郑州网站建设网站设计网站制作与开发,是中原地区专业的郑州网络公司,多年来我们一直努力,服务客户数百家,欢迎您的咨询。
本文链接:郑州网络公司http://tzchb.ieyo.com/dede/1577.html转载请标明出处,谢谢合作!
标签:
  • (
  • javascript
  • 数据
  • 类型
  • 原始