JavaScript每天必学之基础知识


Posted in Javascript onSeptember 17, 2016

基本概念 

javascript是一门解释型的语言,浏览器充当解释器。js执行时,在同一个作用域内是先解释再执行。解释的时候会编译function和var这两个关键词定义的变量,编译完成后从上往下执行并向变量赋值。 

区分大小写 

ECMASCript中的一切(包括变量,函数名和操作符)都区分大小写。 

1. 变量 

变量在第一次用到时就设置于内存中,便于后来在脚本中引用。使用变量之前先进行声明。可以使用 var 关键字来进行变量声明。

var count, amount, level; // 用单个 var 关键字声明的多个声明。 

变量命名 

变量名包括全局变量,局部变量,类变量,函数参数等等,他们都属于这一类。 

变量命名都以类型前缀+有意义的单词组成,用驼峰式命名法增加变量和函式的可读性。例如:sUserName,nCount。
前缀规范:
每个局部变量都需要有一个类型前缀,按照类型可以分为:
s:表示字符串。例如:sName,sHtml;
n:表示数字。例如:nPage,nTotal;
b:表示逻辑。例如:bChecked,bHasLogin;
a:表示数组。例如:aList,aGroup;
r:表示正则表达式。例如:rDomain,rEmail;
f:表示函数。例如:fGetHtml,fInit;
o:表示以上未涉及到的其他对象,例如:oButton,oDate;
g:表示全局变量,例如:gUserName,gLoginTime;

JScript 是一种区分大小写的语言。创建合法的变量名称应遵循如下规则: 

注意第一个字符不能是数字。 

后面可以跟任意字母或数字以及下划线,但不能是空格 变量名称一定不能是 保留字。

javascript是一种弱类型语言,JavaScript 会忽略多余的空格。您可以向脚本添加空格,来提高其可读性。 

var是javascript的保留字,表明接下来是变量说明,变量名是用户自定义的标识符,变量之间用逗号分开。 

如果声明了一个变量但没有对其赋值,该变量存在,其值为Jscript 值 undefined。

强制类型转换 

在 Jscript 中,可以对不同类型的值执行运算,不必担心 JScript 解释器产生异常。相反,JScript 解释器自动将数据类型之一改变(强制转换)为另一种数据类型,然后执行运算。例如:

 运算                             结果

数值与字符串相加        将数值强制转换为字符串。
布尔值与字符串相加    将布尔值强制转换为字符串。
数值与布尔值相加        将布尔值强制转换为数值。

要想显式地将字符串转换为整数,使用 parseInt 方法。要想显式地将字符串转换为数字,使用 parseFloat 方法。 

JavaScript 变量的生存期:当您在函数内声明了一个变量后,就只能在该函数中访问该变量。当退出该函数后,这个变量会被撤销。这种变量称为本地变量。您可以在不同的函数中使用名称相同的本地变量,这是因为只有声明过变量的函数能够识别其中的每个变量。 

如果您在函数之外声明了一个变量,则页面上的所有函数都可以访问该变量。这些变量的生存期从声明它们之后开始,在页面关闭时结束。 

js变量思维导图

JavaScript每天必学之基础知识 

2.js的数据类型 

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

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

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

特殊数据类型
Null

`Undefined`

字符串数据类型:字符串数据类型用来表示 JScript 中的文本。在js中,虽然双引号(”")和单引号(”)均可表示字符串,而且它们几乎没有任何区别。但只使用双引号(“”)来表示字符串被认为是最佳的。 

一个字符串值是排在一起的一串零或零以上的 Unicode 字符(字母、数字和标点符号)。 

什么是Unicode? 

Unicode为每个字符都提供了唯一的数值,不管是什么平台、什么程序或什么语言。开发unicode是为了给处理世界上存在的所有字符提供统一的编码。 

数值数据类型 

我们需要明白一点,JScript 内部将所有的数值表示为浮点值,因此,在 Jscript 中整数和浮点值没有差别。 

Boolean数据类型 

布尔(逻辑)只能有两个值:true 或 false。 

js数组和对象 

详情看我这篇文章->javascript学习总结— —数组和对象部分 

Null 数据类型:可以通过给一个变量赋 null 值来清除变量的内容。 

Jscript中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
 <title></title>
 <script type="text/javascript"> 
   alert(typeof null);
 </script>
</head>
<body>
</body>
</html>

null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。 

Undefined 数据类型: 

如下情况将返回 undefined 值:
对象属性不存在,
声明了变量但从未赋值。

null和undefined的区别

alert(typeof undefined); //output "undefined" 
alert(typeof null); //output "object" 
alert(null == undefined); //output "true"

ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。

alert(null === undefined); //output "false" 
alert(typeof null == typeof undefined); //output "false"

null与undefined的类型是不一样的,所以输出”false“。而===代表绝对等于,在这里null === undefined输出false 

另外,这里介绍一种比较重要的数据类型——引用数据类型 

引用数据类型 

javascript引用数据类型是保存在堆内存中的对象,JavaScript不允许直接访问堆内存空间中的位置和操作堆内存空间,只能通过操作对象在栈内存中的引用地址。所以引用类型的数据,在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存在堆内存中的对象。 

下面我们来演示这个引用数据类型赋值过程

JavaScript每天必学之基础知识 

自然,给obj2添加name属性,实际上是给堆内存中的对象添加了name属性,obj2和obj1在栈内存中保存的只是堆内存对象的引用地址,虽然也是拷贝了一份,但指向的对象却是同一个。故而改变obj2引起了obj1的改变。 

基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。
 而引用类型值则是指那些保存在堆内存中的对象,即变量中保存的实际上只是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。 

简而言之,堆内存存放引用值,栈内存存放固定类型值。

 JavaScript每天必学之基础知识

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。 

原始值存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。引用值存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

<script type="text/javascript”>
var box = new Object(); //创建一个引用类型
var box = "lee";  //基本类型值是字符串
box.age = 23;  //基本类型值添加属性很怪异,因为只有对象才可以添加属性。
alert(box.age); //不是引用类型,无法输出;
</script>

3.JScript 的运算符 

优先级:指运算符的运算顺序,通俗的说就是先计算哪一部分。
结合性:同一优先级运算符的计算顺序,通俗的说就是从哪个方向算起,是左到右还是右到左。 

数据类型转换和基本包装类型 

String() 转换为字符串类型
Number() 转换为数字类型
Boolean() 转换为布尔类型 

parseInt:将字符串转换为整数。从字符串的开头开始解析,在第一个非整数的位置停止解析,并返回前面读到所有的整数。如果字符串不是以整数开头的,将返回NaN。如:parseInt(“150 hi”)返回的值是:150,parseInt(“hi”)返回的值是:NaN。
 parseFloat:将字符串转换为浮点数。 从字符串的开头开始解析,在第一个非整数的位置停止解析,并返回前面读到所有的整数。如果字符串不是以整数开头的,将返回NaN。如:parseFloat("15.5 hi") 返回的值是:15.5,parseFloat("hi 15.5")返回的值是:NaN。

 eval:将字符串作为javascript表达式进行计算,并返回执行结果,如果没有结果则返回undefined。
基本包装类型 

每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能调用一些方法来操作这些数据。基本包装类型包括Boolean、Number和String

var box = 'trigkit4'; //字面量
box.name = 'mike';  //无效属性
box.age = function () { //无效方法
  return 22;
};

//new运算符写法
var box = new String('trigkit4');//new 运算符
box.name = 'mike';  //有效属性
box.age = function () { //有效方法
  return 22;
};

String类型包含了三个属性和大量的可用内置方法
 属性     描述
length :返回字符串的字符长度
Constructor : 返回创建String对象的函数
prototype : 通过添加属性和方法扩展字符串定义

4.js流程控制 

对于js流程控制语句,这里只讲几个比较难懂的。其他不赘述。等下附上一张思维导图。 

1.for…in 语句对应于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。
 for (variable in [object | array])
statements

参数: 
variable:必选项。一个变量,它可以是 object 的任一属性或 array 的任一元素。
 object, array:可选项。要在其上遍历的对象或数组。
 statement:可选项。相对于 object 的每个属性或 array 的每个元素,都要被执行的一个或多个语句。可以是复合语句。 

虽然条件控制语句(如if语句)只在执行多条语句的情况下才要求使用代码块(左花括号”{“开头,右花括号”}”结尾),但最佳实践是始终使用代码块。

if(args)
  alert(args);//容易出错

if(args){
  alert(args);//推荐使用
}

 5.js函数 

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 

Jscript 支持两种函数:一类是语言内部的函数,另一类是自己创建的。
JavaScript 函数允许没有参数(但包含参数的小括号不能省略),也可以向函数传递参数供函数使用。 

更多关于函数的知识请访问我的另一篇文章:javascript学习大总结(四)function函数部分 

对象的组成
方法——函数:过程、动态的
属性——变量:状态、静态的

最后,再附上一张前辈总结的思维导图:

JavaScript每天必学之基础知识

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 单击li防止重复加载的实现代码
Dec 24 Javascript
jQuery判断iframe中元素是否存在的方法
May 11 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 Javascript
使用Web Uploader实现多文件上传
Jun 08 Javascript
第一次接触神奇的Bootstrap表单
Jul 27 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 Javascript
react高阶组件经典应用之权限控制详解
Sep 07 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
Apr 29 Javascript
ionic2.0双击返回键退出应用
Sep 17 Javascript
jQuery判断是否存在滚动条的简单方法
Sep 17 #Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 #Javascript
利用JS提交表单的几种方法和验证(必看篇)
Sep 17 #Javascript
jQuery中常用动画效果函数(日常整理)
Sep 17 #Javascript
js方法数据验证的简单实例
Sep 17 #Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 #Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
Sep 17 #Javascript
You might like
一个简单的域名注册情况查询程序
2006/10/09 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
Python实现TCP通信的示例代码
2019/09/09 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
python元组的概念知识点
2019/11/19 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
大学生专科毕业生自我评价
2013/11/17 职场文书
临床医师个人自我评价
2014/04/06 职场文书
环卫工人先进事迹材料
2014/06/02 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
民间借贷协议书范本
2014/10/01 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
财政局个人年终总结
2015/03/03 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript