基础知识

JavaScript是一种专门为与网页交互而设计的脚本语言。
JavaScript 是一种非常松散的面向对象语言 ==> 弱类型语言
在script便签内书写JS代码, 一旦JS代码出现报错,后面的代码将不执行

JavaScript由三部分组成:
1)ECMAScript  由ECMA-262定义,提供核心语言功能 

      ECMAScript规定了以下组成部分:语法、类型、语句、关键字、保留字、操作符以及对象

2)DOM 文档对象模型  提供访问和操作网页内容的方法和接口   ==> 通常把方法和接口称为API,也就是查找一下文档,如 :W3School
							//方法  提供了一些东西让js与页面进行沟通交流

      DOM级别:DOM1 、DOM2、DOM3

3) BOM 浏览器对象模型  提供与浏览器交互的方法和接口
可选的分号:

ECMAScript中的语句以一个分号结尾;如果省略分号,则由解释器

确定语句的结尾。这是非严谨语言的特点。(不推荐省略分号)
标识符:指变量、函数、属性的名字,或者函数的参数。

标识符命名规则:

   1)第一个字符必须是一个字母、下划线(_)或一个美元符号($);  
   2)其他的字符可以是字母、下划线、美元符号或数字;
   3)不能把关键字、保留字用作标识符。
   4)ECMAScript标识符一般采用驼峰大小写命名格式。

	window.onload = function(){// 预加载 ==> 最后执行
		alert("hi");// 系统弹出框 ==> 一般不使用 (点击确定后面的代码才会继续执行)
		console.log( "hello" );// 控制台输出 报错信息的收集  
		document.write("hello world");// 将文本和标签内容输出到页面
	}
 
注释
	单行注释 //
	多行(块级)注释 /* */
    作用: 
	 1) 提高代码可读性
     2) 阻止代码的执行,解析时解析不到(过滤)
变量

变量是松散类型的,所谓松散类型就是可以保存任何类型的数据
变量赋值的过程叫初始化

- 声明的同时进行赋值
- 先声明 再赋值
1. 变量的类型取决于值
2. 多个变量之间用,隔开
3. 同一变量后赋值会覆盖先赋值
4. var定义的变量叫显式声明, 省略var声明的变量叫隐式声明
5. 省略var操作符可以定义全局变量(不推荐
6. var定义的变量有变量声明提升的过程

数据类型

栈内存:5种基本数据类型的值保存在栈内存中
堆内存:对象类型的值保存在堆内存中

5种基本数据类型
			undefined ==> 未定义类型
			null ==> 空类型
			boolean ==> 布尔类型
			number ==> 数值类型
			string ==> 字符串类型
1种复杂数据类型
			object ==> 对象
	undefined ==> 未定义类型
		 1) 声明一个变量但未赋值,该变量默认保存的就是undefined
			var a;
			console.log( a );// undefined
			console.log( typeof a );// "undefined"
			
		 2) 如果没有声明变量使用(打印)其值,报错
			console.log( b );// 报错: b is not defined
	    	console.log( typeof b );//"undefined"
	        检测一个没有声明过得变量的类型,并不报错,值为"undefined"

				var a;
				console.log( a );//undefined
				console.log( typeof b );//"undefined"

				var a;
				console.log( b );// 报错 
				console.log( typeof a );// 不执行*/

	null ==> 空类型    空对象指针 
		var timer = null;
		console.log( timer );//null
		console.log( typeof timer );//"object"
		//实际上, undefined 值是派生自 null 值的,因此 ECMA-262规定对它们的相等性测试要返回 true 
		console.log( undefined == null );//true

    boolean ==> 布尔类型 
		// JS数据类型中使用的最多的一种
		// 表示真 与 假的 数据类型
		// true ==> 真
		// false ==> 假
		/*var flag = true;
		console.log( flag );//true
		console.log( typeof flag );//"boolean"*/

	number ==> 数值类型
		/*var num = 10;// 整型
		var num = 3.14;// 浮点型
		// 浮点数最多保存17位小数
		console.log( 0.1 + 0.2 );//0.30000000000000004==> 舍入问题
		console.log( 0.1 + 0.2 == 0.3 );//false
		console.log( 0.15 + 0.25 == 0.4 );//true*/

		 NaN :Not a Number ==> 非数值
		// 但是它是一种特殊的数值类型
		 用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。
		// console.log( "abc" - 2 );//NaN
		// NaN特点:
		 1) NaN不等于任何一个值,包括他本身 ==> 自我否定
		 2) 任何涉及与NaN进行操作,返回值都是NaN
		/*console.log( NaN == NaN );//false  自我否定
		console.log( NaN + 4 );//NaN
		var num = 10;
		console.log( typeof num );//"number"
		console.log( typeof NaN );// "number"*/
		
  isNaN(参数n)

	    判断参数n是否是"非数值"。如果是数值返回false,不是数值返回true;
		
	    说明:isNaN()在接收到一个值之后,会尝试将这个值转换为数值。

			alert(isNaN(NaN)); //true
			alert(isNaN(10)); //false(10是一个数值)
			alert(isNaN("10")); //false(可以被转换成数值10)
			alert(isNaN("hello")); //true(不能转换成数值)
			alert(isNaN(true)); //false(可以被转换成数值1)

	string ==> 字符串类型
		// 定义字符串 "" ''
		/*var str = "hello world";
		var str = 'hello world';
		console.log( str );
		console.log( typeof str );//"string"*/

		 字符串嵌套
		// var str = "name:"zhangsan"";
		/*var str = "name:'zhangsan'";// "''"  '""'
		var str = 'name:"zhangsan"';// "''"  '""'*/
		/*var str = "name:\"zhangsan\"";// 转义字符
		alert( str );*/
		
	数据类型包含一些特殊的字符字面量,也叫转义序列(字符),用于表示非打印字符 
	        \n  换行
	        \t  制表
	        \b  空格
	        \r  回车
	        \f  换页

		// 字符串属性 ==> length ==> 返回字符串的长度(个数)
		/*var str = "hello world";
		console.log(str.length);// 11
		console.log( typeof str.length );//"number"

		// 字符串索引 ==> str[index]
		index下标范围 ==> [0,length-1]
		console.log( str[0] );//"h"
		console.log( str[10] );//"d"
		console.log( str[str.length-1] );//"d"*/

	 object ==> 对象
		var o = {// 对象字面量
			name:"zhangsan",
			age:23,
			run:function(){
				alert( this.name + "能跑" );
			}
		};
		/*console.log( o.name );//"zhangsan"
		console.log( o.age );//23
		o.run();*/
		console.log( o );
		console.log( typeof o );//"object"

		var o = new Object(); \\构造函数方法创建

typeof
	操作符 ==> 用于检测数据类型
	返回值 一定是 字符串类型
	// typeof 有两种用法:
			// 1) typeof 变量
			// 2) typeof( 变量 )
			数据类型                  		typeof结果
		undefined ==> 未定义类型				"undefined"
		boolean ==> 布尔类型					"boolean"
		number ==> 数值类型					"number"
		string ==> 字符串类型				"string"
		object 或 null 						"object"
		function ==> 						"function"

	少了个null  多了个function	
	console.log( typeof fn );//"function"
	console.log( typeof typeof 5 );//"string"
	console.log( typeof typeof 5 + 6 );//"string6"
	console.log( typeof typeof (5 + 6) );//"string" 
	console.log( typeof  Number);//"function"
数据类型的转换
各种数据类型转   字符串
		 1) 变量.toString()
			// null 和 undefined 是没有toString()这个方法
					  如:	var timer = null;
							console.log( timer );//null
							console.log( timer.toString() );//报错
		2) String( 变量 ) ==> 强转函数
					console.log( String( null ) );//"null"
		3) + 字符串拼接的功能
					console.log( "" + undefined );//"undefined"*/

各种数据类型转   数值
		// 1) Number( 变量 ) ==> 强转函数
			console.log( Number( "123" ) );// 123
			console.log( Number( "123a" ) );// NaN
			console.log( Number( true ) );// 1
			console.log( Number( false ) );// 0
			console.log( Number( null ) );// 0
			console.log( Number( undefined ) );// NaN  
			console.log( Number( "abc" ) );// NaN  
			console.log( Number( "true" ) );// NaN  
			// 转换数值为0的有: null false "" " " "0" []
			
				// JS专门提供了将字符串转数值的两个方法
		// 2) parseInt() ==> 取整
			console.log( parseInt("123abc") );//123
			console.log( parseInt("12.3abc") );//12
			console.log( parseInt( "a12.3" ) );//NaN
			console.log( parseInt( "1010",2 ) );//10
			console.log( parseInt( 3.14 ) );//3
			console.log( parseInt( 3.94 ) );//3
		// 3) parseFloat() ==> 取浮点数
			console.log( parseFloat("3.14.15abc") );//3.14
			console.log( parseFloat("314abc") );//314
			console.log( parseFloat("a3.14bc") );//NaN

各种数据类型转   布尔值
	// Boolean( 变量 )  ==> 强转函数
			转布尔值为false有: false  ""  0  NaN  null  undefined 
 		 	console.log( Boolean( [] ) );//true
		    console.log( Boolean( {} ) );//true 
运算符
// 1) 加性运算符
		// + 加法
			console.log( 4 + true );//5 ==> 4 + Number(true) ==> 5
			console.log( "4" + true );// "4true"
		// - 减法
			console.log( "4" - true );// 3
			// "4" - true ==> Number("4") - Number(true) ==> 3
			console.log( "3" - null );// 3
			console.log( true - undefined );// NaN ==> 1 - NaN
	// 2) 一元加减操作符
		// +
			console.log( +"4" );//4  Number("4")
			console.log( +true );//1
		// -
			console.log( -"4" );//-4 -Number("4")
			console.log( -true );// -1

		console.log( +"4" + 4 + "4" );//"84" ==> 4 + 4 + "4" ==> 8 + "4"

	// 3) 乘性运算符
		// * 乘法
			console.log( "4" * true );// 4
			console.log( "4" * null );// 0
			console.log( "4" * undefined );// NaN
			console.log( "abc" * true );//NaN
		// / 除法
			console.log( "6" / "2" );// 3
			console.log( true / false );// Infinity
		// % 取余
			console.log( 3 % 4 );// 3   前面数值小
			console.log( 4 % 2 );// 0
			console.log( 4 % 3 );// 1
			console.log( 99 % 100 );// 99
			console.log( 101 % 100 );// 1
	// 4) 递增递减运算符
		// 后置型  
			// 先赋值 再自增自减
			//i++  
			//i--
			/*var i = 10;
			var sum = i++;//10
			console.log( i );// 11
			console.log( sum );// 10

			var i = 10;
			var sum = i--;
			console.log( i );// 9
			console.log( sum );// 10*/


		// 前置型
			// 先自增自减 再赋值
			// ++i
			// --i
			/*var i = 10;
			var sum = ++i;
			console.log( i );//11
			console.log( sum );// 11

			var i = 10;
			var sum = --i;
			console.log( i );// 9
			console.log( sum );// 9*/

			var i = 4;
			var sum = i++ + ++i + i-- + --i + i;
			//  sum =  4  +  6  +  6  +  4  + 4;
			//   i  =  5	 6	   5	 4
			console.log( i );// 4   
			console.log( sum );// 24 

	// 5) 相等运算符
		// 相等比较 ==> 仅仅比较数值,不比较类型
			// ==  相等
				/*console.log( 5 == "5" );//true
				console.log( undefined == null );// true
				console.log( 1 == true );//true
				console.log( "" == "0" );//false    相同类型就不隐式转换了
				console.log( false == "" );//true*/
				
				// null 只能与null 和 undefined 比较返回true 其他全为false
				console.log( null == 0 );// false

			// !=	不等
				console.log( 5 != "5" );//false
				console.log( NaN != NaN );//true

		// 全等比较 ==> 不仅比较类型 还有比较值
			// === 全等 
				console.log( 5 == "5" );// true
				console.log( 5 === "5" );// false
				console.log( 5 === 5 );//true

			// !== 不全等
				console.log( 5 != "5" );//false
				console.log( 5 !== "5" );//true
	// 6) 比较运算符
		// >  >=  <  <=
		console.log( 4 > 2 );//true
		console.log( 4 > 4 );//false
		console.log( 4 >= 4 );//true
		console.log( 12 > "2" );// true
		console.log( "12" > "2" );// false ==> 都是字符串比较ASCII值    0  48   A  65   a  97
		console.log( "21" > "2" );//true
		
		console.log( 5 > "abc" );// false  5 > NaN
		console.log( 5 < "abc" );// false 5 < NaN
		console.log( 5 == NaN );// false

	// 7) 逗号运算符
		// 一般用于声明多个变量
		/*var a = 1, b = 2 , c = 3;

		var a = (1,2,3,4,5);// a = 1 a = 2 a = 3 a = 5
		console.log( a );//5
		
		、、在赋值
		var a;
		a = 1,2,3,4,5;
			  无效语句
		console.log( a );// 1

		、、在声明变量,数字不能作为变量名
		var a = 1,2,3,4,5;
		console.log( a );// 报错*/

// 8) 条件运算符 ==> 三元运算符 ==> 三目运算符
		// 变量或语句 ? 变量或语句 : 变量或语句
		// 如果?前的语句为真,则执行?后的语句 
		// 如果?前的语句为假,则执行:后的语句
		/*var a = 14,
			b = 12;
		var maxNum = a > b ? a : b;
		console.log( maxNum );// 14

		// 三元运算符可以替代简单的if语句
		var a = 14,
			b = 12;
		if( a > b ){
			var maxNum = a;
		}else{
			var maxNum = b;
		}*/

	// 9) 赋值运算符
		// 简单赋值运算符  = 
			var a = 10;

		// 复合赋值运算符
			// +=  -=  *=  /=  %=  >>=  <<=  <<<=
			var a = 10;
			a += 5; // a = a + 5
			console.log( a );// 15

			var a = 10;
			a -= 5;// a = a - 5
			console.log( a );// 5

			var i = "4";
			i += i++ + ++i;
			// i +=  10 ==> i = i + 10 ==> i = "4" + 10 ==> "410"
			console.log( i );//"410"
			
逻辑运算符(布尔运算符)
逻辑运算符有3种: &&(与)、||(或)、 ! (非)
  * 优先级 ! > &&  > ||  
  * &&(与):
	1)返回第一个为假的值。==》 找假
	2)都为真时返回最后一个为真的值。		
  * ||(或):
	1)返回第一个为真的值。==》 找真
	2)都为假时返回最后一个为假的值。
  * ! (非)
    说明:
	1)、无论运算数是什么数据类型,逻辑非都会返回一个布尔值 ==》 非真即假 非假即真
	2)、同时使用两个逻辑非运算符时,第一个逻辑非运算会基于无论
	什么运算数返回一个布尔值,而第二个逻辑非则对该布尔值求反。 
	!!变量 ==》 Boolean(变量) 
输入弹出框 prompt()
	// prompt( 提示字符串1 , 提示字符串2 );
	// 点击确定,返回输入的内容 ==> 字符串
	// 点击取消或关闭, 返回 null 
	var score = prompt( "请输入您的成绩" , "成绩介于0-100之间" );
	console.log( score );//
	console.log( typeof score );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值