(JS)JS基础概念

运行在浏览器的脚本语言,简称JS
JS是运行在浏览器上的脚本语言

HTML中嵌入JS语言的三种方式:
第一种,在标签属性后面加
第二种,在文件里加入js代码块
第三种:
在这里插入图片描述

JS的变量

<script type="text/javascript">
			/*
				JS中的变量:
					变量声明语句:
					var 变量名;
					变量赋值语句:
					变量名 = 值;
					 
				js是一种弱类型语言,没有编译阶段,可以给变量随意赋任何类型的值
			*/
			var i;
			alert("i" = i);  //不赋值会默认赋值undefined, undefined为一个值
			
			//一个变量没有声明直接用会报错
			alert(age);
			
			var a,b,c = 200;
			alert(c);
			
			a = "0";
			alert(a);
			a = 10;
			alert(a);
		</script>

JS中的函数

1.函数初步

/*
			JS中函数的语法格式
			第一种方式
				function 函数名(形式参数列表){
				函数体;
			}
			第二种方式
				函数名 = function(形式参数列表){
					函数体;
				}
				JS中的函数不需要指定返回值类型,返回什么类型都行
			*/
			function sum(a,b){
				//a和b都是局部变量,他们都是形式参数(a,b不需要指定变量类型)
				alert(a+b);	
			}
			sum(10,20);//函数必须调用时才能执行
		</script>
		
		<!--还可以这样调用函数-->
		<input type = "button" value = "30和40的求和" onclick="sum(30,40);">

2.函数进阶

<script type="text/javascript">
			/*
				JS中的方法 ,参数的变量类型,以及参数数量没有限制
			*/
			alert(2);
			function sum(a,b){
				return a+b;
			}
			var returnvalue = sum(1,2);
			alert(returnvlaue);
			
			returnvalue = sum(2);
			alert(returnvalue);//输出NAN,NAN是一个具体的值
						
			//可以连接两个字符串
			returnvalue = sum("wen");
			alert(returnvalue);//输出wenundefined
			
			//数字和字符串连接
			returnvalue = sum(1,"wen");
			alert(returnvalue);
			
			//字符串和数字连接
			returnvalue = sum("wen",1);
			alert(returnvalue);
			
			
			/*
				JS中两个同名函数出现,后面的会覆盖掉前面的
			*/
		   function test(username){
			   alert("test1");
		   }
		   function test(){
			   alert("test1test1");
		   }
		</script>

3.局部变量与全局变量

<script type="text/javascript">
			/*
			全局变量:
				在函数体之外生命的变量属于全局变量,全局变量的生命周期是:
					浏览器打开时声明,浏览器关闭时销毁,尽量少用。因为全局
					变量会一直在浏览器的内存中,耗费内存空间。能使用局部变量
					尽量使用局部变量
			局部变量:
				在函数体当中生命的变量,包括一个函数的形参都属于局部变量
				局部变量的生命周期是,函数开始执行时局部变量的内存空间开辟
				函数执行结束之后,局部变量的内存空间开始释放。局部变量生命
				周期较短
				
			*/
		  
		//全局变量
		var username = "zhangsnaa";
		
		function fun(){
			//局部变量
			var username = "lisi";
			//就近原则
			alert(username);
		}
		fun();
		
		alert(username);
		
		//以下语法很奇怪
		function myfun(){
			name = "wangwu";
		}
		myfun();
		alert(name); //这里会输出wangwu
		//通过以上注意,当一个变量在任何位置没有var声明时,他都是一个全局变量,即使是在函数体内声明的.
		</script>

JS的数据类型

1.typeof
动态获取数据类型

<script type = "text/javascript">
			/*
				1.JS中的数据类型:原始类型,引用类型
				原始类型:Undefined,Number,String,Boolean,Null
				引用类型:Object以及Object的子类 
				2.ES规范,在ES6之后,又基于以上6中数据类型之外添加了一种新的类型:Symbol
				
				3.JS中有一个运算符叫做typeof,这个运算符可以在程序的运行阶段动态的获取变量的数据类型
					语法格式:typeof 变量名
					typeof运算符的结果是以下6个字符串值以,注意字符串都是全部小写
						"undefined"
						"number"
						"string"
						"boolean"
						"object"
						"function"
				4.js中比较字符串是否相等,同'== '
			*/
			function sum(a,b){
				if(typeof a == "number"&&typeof b == "number"){
					return a+b;
				}
				alert("a和b必须为数字");
			}
			
			var returnvalue = sum(1,2);
				alert(returnvalue);
				returnvalue = sum("sd",2);
				alert(returnvalue);
		</script>

2.Undefined类型
Undefined类型只有一个值,这个值就是undefined
当一个变量没有手动赋值,系统默认赋值为undefined
或者也可以一个变量手动赋值undefined

<script type="text/javascript">
	var i ;
	var k = undefined;
	var s = "undefined";
	alert(i == k); //true
	alert(k == s); //false
</script>

3.Number类型

<script type="text/javascript">
			/* 1.Number类型包括哪些值?
				整数,小数,正数,负数,不是数字(NAN),无穷大都属于Number类型(Infinity) */
				
			var i = 10;
			var j = "ds";
			k = i/j;
			alert(typeof k);
			alert(typeof i/j);
			//Infinity(当除数为0的时候,结果为无穷大)
			alert(typeof 10/0);
			
			//关于isNaN(数据),结果是true表示不是一个数字,结果是false表示是一个数字
			function sum(a,b){
				if(isNaN(a)||isNaN(b)){
					alert("参与运算的必须是数字");
					return;
				}
				return a+b;
			}
			
			
			/*
			parseInt();//可以将字符串自动转换为数字,并且取整数位
			parseFloat();//可以将字符串自动转换为数字
			Math.ceil();//向上取整
			*/
		   
		</script> 

4.布尔类型

<script type="text/javascript">
			/*
				1.JS中的布尔类型永远都只有:true和false
				2.在Boolean类型中有一个函数叫做:Boolean().
				语法格式:
					Boolean(数据);
				Boolean()函数的作用是将非布尔类型转换成布尔类型
					
			*/
		   
		   /*
				在if里面放入的数据会自动被转换为布尔类型
		   */
		  var name = "bob";
		  if(name){
			  alert("welcome"+name);
		  }else{
			  alert("输入不能为空");
		  }
		  
		  
		  /*
			观察以下数据被转换成true还是false
		  */
		  alert(Boolean(1));//true
		  alert(Boolean(0));//false
		  alert(Boolean(""));//false
		  alert(Boolean("abc"));//true 
		  alert(Boolean(null));//false
		  alert(Boolean(NaN));//false
		  alert(Boolean(undefined));//false
		  alert(Boolean(Infinity));//true
		  
		  
			
		</script>

String类型

/*
				1.字符串的创建:单引号双引号均可
					var s = 'wen';
					var s = "wen";
				2.JS中创建字符串类型的方法
					var s1 = "abc";  //小String,是String类型
					var s2 = new String("abc");//大String,是Object类型
					大小String类型的属性是通用的
					
				3.String类型下的常用函数
					indexOf(字符串) 	获取指定字符串在当前字符串中第一次出现处的索引
					length 		获取指定字符串在当前字符串中最后一次出现处的索引
					replace		替换
					substr		截取子字符串
					substring	截取子字符串
					toLowerCase	转换小写
					toUpperCase	转换大写
					split		拆分字符串
			*/
		   var name = "name%wen%sd%fs"
		   alert(name.replace("%","&"));  //只会替换一个,要想全部替换,要用到正则表达式
		   
		   //考点:substr和substring的区别
		   name = "abcdefg";
		   //substr(startIndex,length)
		   alter(name.substr(2,4));
		   //substring(startIndex,endIndex);要注意的是不包含endIndex
		   alter(name.substring(2,4));

Object类型

<script type="text/javascript">
			/*
				1.Object是所有类型的超类
				2.Object类包括哪些属性?
					prototype属性(常用的),作用是给类动态的扩展属性和函数。
					constructor属性
				3.Object类包括哪些函数
					toString();
					valueOf();
					toLcoalString();
				4.在JS当中定义的类默认继承Object,会继承Object类中所有的属性以及函数
				换句话说,自己定义的类中也有prototype
				
				5.在JS中怎么定义,怎么new对象
				定义类的语法:
					第一种方式:
					function 类名(形参){
						
					}
					第二种方式:
					类名 = function(形参){
						
					}
				实例化类:
					new 类名();
					
				看起来和函数的定义很像,在调用的时候,使用了new就代表是实例化一个Object
			*/
		   function Student(){
			   alert("student...");
		   }
		   Student();
		   var j = new Student();
		   alert(j);
		   
		   //类的定义同时也是类构造器的定义
		   function User(no,name,age){
			   this.no = no;
			   this.name = name;
			   this.age = no,name,age;
		   }
		   
		   var u1 = new User(12,"wen",23);
		   alert(u1.age);
		   alert(u1["name"]);
		   
		  
		   //prototype的使用
		  Product = function(no,price){
			  this.no = no;
			  this.price = price;
			  
			 getPrice = function(){
				  return this.price;
			  }
		  }
		  alert(26);
		  var p1 = new Product(2,23);
		  //prototype可以动态的改变类的属性,可以给类添加函数
		  Product.prototype.getno = function(){
			  alert("介是嘛雅");
			  return this.no
		  }
		  p1.getno();
	
		  var pri = p1.getPrice();
		  alert(p1.price);
		  alert(27);
		  alert(pri);
		   
		</script>

NAN,null,undefined 三者有什么区别

1.三者数据类型不一样
2.null和undefined可以等同
3.'=='等同运算符,判断值是否相同      '==='全等运算符,不但要判断值是否相同,同时要判断数据类型是否相同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值