JavaScript编程语言基础知识(个人笔记)

1、JavaScript组成

ECMAScript、 DOM、 BOM

2、JS的特点:

  • 解释型语言(无需编译,直接运行)

  • 类似于C和Java的语法结构

  • 动态语言

  • 基于原型的面向对象

3、HelloWorld:

控制浏览器弹出一个警告框
* alert(“helloworld”);
计算机在页面中输出一个内容
* document.write(“helloworld”)像body中输出一个内容
向控制台输出一个内容
* console.log(“helloworld”)

4、js编写位置

  1. 写在script标签里
  2. 写在外部js文件中,通过script标签src属性引入
    好处:可以在不同页面中同时引入,也可以利用到浏览器的缓存机制,推荐使用
    注:script标签一旦用于引入外部文件了,就不能编写代码了
  3. 可以写在标签属性中:
    可以将js代码编写到标签的onclick属性中,当我们点击按钮时,js代码才会执行
<button onclick="alert('你点我干嘛');">点我一下</button>

可以写在超链接的href属性中,当点击超链接时,会执行js代码

  <a href="javascript:alert('让你点你就点');">你也点我一下</a> 

虽然可以写在标签属性中,但他们属于结构与行为耦合,不方便维护,不推荐使用

5、基本语法

  1. 注释:/多行注释/ //单行注释
  2. js中严格区分大小写
  3. js中每一条语句以分号结尾
    如果不写分号,浏览器会自动添加,但是会消耗系统资源 有时浏览器会加错分号,所以开发中分号必须写
  4. js中会自动忽略多个空格和换行,所有可以利用空格和换行对代码进行格式化

6、字面量和变量

字面量,都是一些不可改变的值
比如 1,2,3,4,5
字面量都是可以直接使用的,但是一般不直接使用

变量,可以用来保存字面量,变量的值可以任意改变
变量更加方便,开发中通常通过变量去保存一个字面量
声明变量:var关键字
var a = 1;

7、标识符

所有可以自主命名的都可以称为标识符
eg:变量名,函数名,属性名都属于标识符
标识符的命名规则

  1. 可以含有字母、数字、_、$
  2. 不能以数字开头
  3. 不能是js中的关键字或保留字
  4. 一般都采用驼峰命名法
    首字母小写,每个单词首字母大写,其余小写helloWorld xxxYyyZzz

8、字符串

数据类型指的就是字面量的类型
在js中一共有6种数据类型

String 字符串
Number 数值
Boolean 布尔值
Null 空值
Undefined 未定义
Object 对象

其中String Number Boolean Null Undefined属于基本数据类型
而Object属于引用数据类型
1.String字符串:
需要使用引号引起来(双引号单引号都可以,但是不能混用且不能嵌套)
在字符串中可以使用\作为转义字符,当表示一些特殊字符时可以使用\转义字符
" 表示"
’ 表示‘
\n 表示换行
\t 表示制表符
\ 表示
2.Number数值:
所有数值都是Number类型,包括整数和浮点数
js中可以表示的数字最大值
Number.MAX_VALUE
如果超出了最大值,则返回一个Infinity表示正无穷,Infinity是字面量
Number.MIN_VALUE
0以上的最小值
可以使用一个运算符typeof,来检查一个变量的类型
语法:typeof 变量
NaN:非法运算
a=”abc“ * ”bcd“ NaN也是字面量
js中整数的运算基本可以保证精确,浮点运算可能不精确
3.Boolean布尔值:
true false 主要用来做逻辑判断
4.Null空值:
只有一个值null 专门用来表示一个空对象 null为object类型
5.Undefined未定义:
只有一个值undefined
当声明一个变量,但是不给变量赋值时,他的值就是undefined 返回类型就是undefined

9、强制类型转换

指将一个数据类型强制转换成其他数据类型
类型转换主要指,将其他数据类型转换成 String Number Boolean
1.将其他数据类型转换为String

  • 方式一:调用被转换数据类型的toString()方法 var b = a.toString(); 该方法具有返回值
    注意:调用xxx的yyy方法 即xxx.yyy();
    null和undefined没有toString()方法
  • 方式二:调用String()函数,并将被转换的数据作为参数传递给函数
    a = String(a);
  • 方式三:利用加法运算特点 a + “”即可转换成string,实际上也是调用了String()

2.将其他数据类型转换成Number

  • 方式一:使用Number()函数 a = Number(a);
    字符串 --》数字
    1.如果是纯数字的字符串,则直接将其转换为数字
    2.如果字符串中有非数字的内容,则转换为NaN
    3.如果字符串是空串或者全是空格的字符串,则转换成0
    布尔 --》数字
    true转成1 false转成0
    Null --》数字 = 0
    undefined --》数字 = NaN
  • 方式二:专门用于字符串 parseInt()
    把一个字符串转换成一个整数 parseFloat() 把一个字符串转换成一个浮点数可以获得有效的小数
    eg1:a = “123px”;
    a = parseInt(a);//结果为123 类型为number
    eg2:a= “123a456”;// a = “123.456a4”;
    a = parseInt(a);//结果为123
    类型为number 如果对非String类型使用parseInt()或parseFloat(),它会先将其转换成String,然后再操作
  • 方式三:根据算数运算的特点
    d = d - 0; d = d*1; d = d/1;
  • 方式四:使用一元运算符将其转换成number
    a = +a;

3、将其他数据类型转换成Boolean

  • 方式一:使用Boolean()函数
    数字 --》布尔
    除了0和NaN,都是true
    字符串 --》布尔
    除了空串,其余都是true
    Null和undefined都是false
    对象也会转换为true
  • 方式二:隐式类型转换
    可以对任意数据类型取两次反,来将其转换成boolean

10、其他进制的数字

在js中,如果需要表示16进制的数字,则需要以0x开头
如果需要表示8进制数字,则以0开头
如果需要表示2进制数字,则以0b开头。(但是不是所有浏览器都支持)
可以在parseInt()中传递一个第二个参数,来制定数字的进制 a = parseInt(a,10);

11、运算符(操作符)

通过运算符可以对一个或多个值进行运算,并获取运算结果
比如:typeof就是运算符,可以来获得一个值的类型它会将该值的类型以字符串的形式返回
1.算数运算符

当对非Number类型进行运算时,会将这些值转换成Number再进行运算
任何值和NaN进行运算都等于NaN
任何值做 - * / 运算时都会自动转换成Number
+	可以对两个值进行加法运算,并将结果返回
 如果对两个字符串进行加法运算,会进行拼串操作
 “123+456=123456”
任何值和字符串做加法运算,都会先转换成字符串,然后再进行拼串
1 + 2 +3//“33”    “1”+2+3  // "123"
-	可以对两个值进行j减法运算,并将结果返回
*	乘法		2*undefined  //NaN
/	除法
%	取余运算 		9%3  // 0     9%4  //1

2.一元运算符:

只需要一个操作数(typeof+ 正号	不会对数字产生任何影响
-  负号	可以对数字进行取反
对于非Number类型先转换成number
var result = 1 + +"2" + 3;    //6

3.自增和自减:无返回值

自增 ++:
前++:a++;  //a = a+1;++++a;都立即使原变量的值自增1
不同点:输出a++表达式的值等于原变量的值
输出++a表达式的值等于原变量自增后的值
eg1:var c = 10;
  c++;//已经改变原变量
  console.log(c++);   //11	第二次c++
eg2:var result  = d++ + ++d  +d;//20+22+22=64
eg3:d = d++//20
自减 --:自身-1--和后-- 	类似自增
练习:		var n1 = 10,n2 = 20;
			var n = n1++;
			console.log("n="+n);//10
			console.log("n1="+n1);//11
			n = ++n1;
			console.log("n="+n);//12
			console.log("n1="+n1);//12

4.逻辑运算符

!	非	
	对一个值进行非运算,对布尔值进行的取反操作
	对非布尔值取反,先将其转换成布尔值
	可以对任意数据类型取两次反,来将其转换成boolean
&&	与	串联电路
	可以对符号两侧的值进行与运算并返回结果
	运算规则:只要有一个false,结果就为false
	js中的“与”属于短路的与,如果第一个值为false,则不会看第二个值
||	或	并联电路
	运算规则:有一个为true,就返回true
	js中的“或”属于短路的或,如果第一个值为true,则不会有第二个值
&& ||非布尔值的情况
	先将其转换成布尔值,然后进行运算,并返回原值
与运算:如果两个值都为true,则返回后边的值
       如果两个值中有false,则返回靠前的false
在哪里停止返回哪里	找false
或运算:找true

5.赋值运算符

= 	可以将符号右侧的值赋值给左侧的变量
+=	a += 5//a=a+5;
-=	a -= 5//a=a-5;
*=	a *= 5;  //a=a*5;
%= 	a %=5;  //a= a%5;

6.关系运算符

通过关系运算符可以比较两个值之间的大小关系
如果关系成立它会返回true,如果不成立就返回false
>	>=	<	<=
非数值情况:
	1.先将其转换为数值类型,再进行比较
	2.任何值和NaN做任何比较都是false
	3.如果符号两边的值都是字符串,不会将其转换成数字进行比较,而是分别比较字符串中字符的Unicode编码,比较字符编码是一位一位进行比较的(可以对英文进行排序)
eg:“11<"5"//true	"abc"<"b"//true
在网页中使用Unicode编码:&#编码;这里的编码是10进制
在js中:/u编码,16进制

7.相等运算符

== 相等运算符用来比较两个值是否相等,相等返回true,否则返回false
	注:null == 0//false
	undefined衍生自null;undefined == null//true
	NaN不和任何值相等,包括本身
	可以通过isNaN()函数判断一个值是否为NaN
!=  不相等,判断两个值是否不相等,如果不相等返回true,否则返回false
===  全等
	不会做类型转换,全等的两个值类型也必须相等
!==	不全等
	同样,不会做类型转换,类型不同直接返回true

8.条件运算符(三元运算符)

语法:条件表达式?语句1:语句2
对条件表达式进行求值,(条件表达式为非布尔值时,先转换成boolean)
如果该值为true,则执行语句1,
如果该值为false,则执行语句2
eg:var max = a > b ? (a > c ? a : c) : (b > c ? b : c)  //可读性差,不建议使用

12、流程控制语句

1.语句的分类
条件判断语句
条件分支语句
循环语句
2.if语句(条件判断语句)

语法一:if(条件表达式)	语句
	   if(条件表达式)	  { 语句1; 语句2; 语句3...}
	   if(条件表达式1 && 条件表达式2)	  { 语句1; 语句2; 语句3...}
语法二:if(条件表达式){ 
		语句1; 语句2; 语句3...
		}else{
			语句...}
语法三:if(条件表达式){ 
			语句1; 语句2; 语句3...
		}else  if(条件表达式){
			语句...
		}else  if(条件表达式){
			语句...
		}else{
		语句...}
//prompt(),弹出警示框可以输入内容,返回值是String类型	
//+prompt(),返回值被转换Number
//if语句可以嵌套

3.switch语句(条件分支语句)

语法:switch(条件表达式){
		case  表达式:
			语句...
			breakcase  表达式:
			语句...
			breakdefault:
			语句...
			break;
			}
//执行时,条件表达式与表达式进行全等比较,如果执行结果为true,则执行当前case
//if语句可以实现switch功能,同样switch语句也可以实现if功能

4.while语句(循环语句)(先判断,后执行)

语法:while(条件表达式){
		语句...(循环体)
  	 }
//条件表达式为false时,终止循环体执行
//条件表达式写死为true时,为死循环
//该循环不会停止,除非浏览器关闭,死循环在开发中慎用
//可以使用break终止循环

创建一个循环,往往需要三个步骤
1.初始化一个变量
2.在循环中设置一个条件表达式
3.定义一个更新表达式,每次更新初始化变量
5.do…while循环(先执行,后判断)

语法:do{
		语句...
	}while(条件表达式)
//do...while可以保证循环体至少执行一次

6.for循环

语法:for(1初始化表达式;2条件表达式;4更新表达式){
		3语句...
   	 }
for(var i = 0;i<10;i++){
	alert(i);
}
//如果,for循环中不写任何表达式,只写两个;,此时是一个死循环,慎用
//i += 2;   i= i+2;

7.break和continue

1.break关键字可以用来退出switch或循环语句,不能在if语句中使用break和continue
2.break关键字,会立即终止离他最近的循环体
3.要终止外部循环的话,为循环语句创建一个label,来标识当前循环,label:循环 使用break时,break label,终止指定循环
4.continue关键字,跳过当次循环
测试程序性能,在程序执行前,可开启计时器,console.time(“字符串”), 它需要一个字符串作为参数,这个字符串将会作为字符串的标识 ,在程序结束后,终止计时器,console.timeEnd(“字符串")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值