JavaScript每天必学之基础知识_javascript技巧

基本概念 

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变量思维导图

 

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

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

 

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

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

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

 

在 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函数部分 

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

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js
基础知识
javascript技巧、javascript高级技巧、javascript调试技巧、javascript小技巧、javascript每天15分钟,以便于您获取更多的相关知识。

时间: 2024-12-26 20:28:46

JavaScript每天必学之基础知识_javascript技巧的相关文章

javascript每日必学之基础入门_javascript技巧

        从今天开始,我将带领新朋友们,从了解javascript开始,一步一步地进阶到大神境界,别的不废话,现在开始,我们就一点一点地从入门阶段开始. 我们还是介绍一下javascript的身世,不然,大家会对javascript存在非常大的误解,它的产生历史,我们就过于多说,我也记不住,上学开始历史也没及过格 js与我们经常用来开发后台程序的java语言不是什么亲戚,他们的使用范围也是相差非常远,js只是用在html,用来对document节点进行增删改查,构建与服务器通讯的一种解释性

javascript每日必学之条件分支_javascript技巧

大家好,我们今天接着前面的讲,前面已经大概了讲了一下运算符,今天的任务主要就是讲解逻辑条件分支,循环. 我们先就来模拟一个逻辑块,就用我们经常接触到的买车票来说吧,车票的价格对不同的人价格是有差别的,但是我们都是一样的去执行买票这个行为,我们就可以把买票写成一个函数BuyTicket //代码 function BuyTicket(){ console.log("请付款200元"); } 大家看到了这个函数体,其实是有缺陷的,我们每个人去买票的时候,都是执行这一个函数,如果是军人,或者

Bootstrap每天必学之基础排版_javascript技巧

本次主要来了解的是排版,这个大部分在HTML的基本标签中也是存在的,所以相对比较简单,为了保证系列的完整性,也顺带复习下,还是记录一下.主要内容如下: 1.标题 2.页面主体 3.强调 4.缩略语 5.地址 6.引用 7.列表 一.标题 Html中的所有标题标签,从<h1>到<h6>均可使用.另外还提供了.h1到.h6的class,为的是给inline属性的文本赋予标题的样式. <div class="container"> <h1 class

不懂JavaScript应该怎样学_基础知识

[译注: 可能你会说不翻译里面推荐的参考资料一切都是枉然,但是重要的是文章作者提供的学习思路.具体的参考内容你可以去Google相应知识的中文版.] 翻译不当的地方还请留言指正! 帮帮我!我不懂JavaScript [Help! I Don't Know JavaScript!] June 5th, 2007, 作者 Michelle 为了帮助所有对Mootool有兴趣却碰上很多麻烦的人,我整理了这些能够教给你开始从事客户端应用开发所需的所有知识的网上资源. 职业必备工具 这些是从事Web开发的

理解JavaScript表单的基础知识_javascript技巧

HTMLFormElement继承了HTMLElement,它自己独有的属性和方法有: acceptCharset:服务器能够处理的字符集,等价于HTML的accept-charset特性 action:接收请求的URL,等价于HTML中的action特性. elements:表单中所有控件的集合(HTMLCollection) enctype:请求的编码类型 length:表单中控件的数量 method:要发送的HTTP请求类型,通常是get或post name:表单的名称 reset():将

Bootstrap每天必学之导航条_javascript技巧

1.导航条 导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个"条"字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背景色(显示更突出).而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式.在这一节中将一起探讨Bootstrap框架中导航条的使用. 导航条和导航一样,在Bootstrap框架中是一个独立组件,所以你也可以根据自己的需求使用不同的版本: LESS版本:对应的源文件navbar

ECMAScript 基础知识_javascript技巧

JavaScript的核心之一ECMAScript的语言特性和Java.C.Perl都有许多相似之处,其中不少特性都是从这些语言借鉴而来,同时它们之间也存在许多差异.下面列举一些ECMAScript的基本特性.    --和Java一样,ECMAScript区分大小写,注释的格式相同,通过{}确定代码块,原始数据类型存储在堆栈,对象的引用存储在堆中    --ECMAScript是一种松散的语言,ECMAScript通过var操作符声明变量,并且不限类型,例如var n = 25,那么n就是数字

第二次聊一聊JS require.js模块化工具的基础知识_javascript技巧

前一篇:JS模块化工具我们以非常简单的方式引入了requirejs:http://www.jb51.net/article/82527.htm,这一篇将讲述一下requirejs中的一些基本知识,包括API使用方式等 基本API require会定义三个变量:define,require,requirejs,其中require === requirejs,一般使用require更简短 define 从名字就可以看出这个api是用来定义一个模块require 加载依赖模块,并执行加载完后的回调函数

Bootstrap每天必学之简单入门_javascript技巧

在上一篇文章中主要是简单的介绍了一下Bootstrap,这篇文章进一步了解相关内容,为之后的学习打下基础. 从Visual Studio 2013前不久的更新中看,微软是将Bootstrap3的新版本加入到了VS当中,所以学习Bootstrap3也没什么顾虑了.一.下载BootStrap官网的文件很详细简单,对于下载来说也有多种方式.对于我们开发者来说,估计最简单的方式就是直接下载编译和压缩后的CSS.JavaScript文件,另外还包含字体文件,但是不包含文档和源码文件.打开解压包之后可以发现