Javascript 学习

JavaScript数据类型与变量详解

数据类型:

JavaScript是弱类型语言,并不是没有类型,可以识别下面几种类型的值:

  • Boolean 布尔值
  • Number 数字 (整数、负数、浮点数、NAN、最大最小值)
  • String 字符串
  • null 不存在的东西
  • undefined 只声明没有赋值
  • Symbol
  • Object :
    – Array
    – RegExp
    – Date
    – Math
    – Function

可以使用typeof 判断数据类型,操作符返回一个字符串,但并非返回的所有结果都符合预期

typeof false  //"boolean"
typeof .2    //"number"
typeof NaN   //"number"
typeof ' '  //"string"
typeof undefined //"undefined"
typeof Symbol() //"symbol"

typeof new Date()  //"object"
typeof []  //"object"

typeof alert  //"function"

typeof null  //"object"
typeof not_defined_var  //"undefined"

变量

在应用程序中,使用变量来为值命名。变量的名称:identifiers。

声明

  1. 使用关键字 var :函数作用域
  2. 使用关键字let : 块作用域(block scope local variable)
  3. 直接使用:全局作用域
var global_var = 1;  //全局

function fn (){
	var fn_var= 2//函数级作用域
	
	if(fn_var>10){
		let block_var = 3;  //块级作用域
		glocal_var2 = 5;   //全局的作用域,但在严格的use strict模式下会报错
	}
}

只声明不赋值,变量默认值是undefined

const 关键字可以声明不可变的变量,是块级作用域。是常量。声明后就可以使用,但是不能改变。

	const num = 1;
	const obj = {
		prop:'value'
	};
	num = 2; //Uncaught TypeError: Assignment to constant variable.
    
    obj['prop'] = 'value2'
    
	obj = [] ; //VM98207:1 Uncaught TypeError: Assignment to constant variable.

变量提升

js中可以引用稍后声明的变量,而 不会引发错误,这就是变量提升

	console.log(test) ;  //undefined
	var test = 1;

	//等同于:
	var test ;
	console.log(test);
	test = 1;	

函数

一个函数就是一个可以被外部调用或者内部本身递归调用的子程序。

定义函数
  1. 函数声明
  2. 函数表达式
  3. Function 构造函数
  4. 箭头函数
 function fn(){}  //左值用的时候是声明
 var fun = function(){} //在右边时是表达式
 var fn1 = new Function(arg1,arg2,arg3,...argN,funcBody)
var fn2 = (params) => {}  //箭头函数
arguments
  1. 一个包含了传递给当前执行函数参数的类数组的对象
  2. arguments.length:传给函数的参数的个数
  3. arguments.caller:调用当前执行函数的函数
  4. arguments.callee:当前正在执行的函数
	function fn(){
		return arguments;
	}
	fn(1,2,6,40); //Arguments(4) [1, 2, 6, 40, callee: ƒ, Symbol(Symbol.iterator): ƒ]
rest 是对arguments的升级,指剩余参数
	function foo(...args) {
		return args;
	}
	foo(1,5,6,8,7,8,50); // [1, 5, 6, 8, 7, 8, 50]
	function fn(a,b,...args){
		return args;
	}
	fn(2,3,5,6,7,9); //(4) [5, 6, 7, 9]

default 函数的参数在定义的时候约定的默认值
	function test (a=1,b=3){
		return a+b
	}
	test(4,6); //10
	test(3); //6
	test(); // 4

对象

js中对象是可变 键值对

定义对象:

1.  字面量
2. 构造函数
var obj = {
	prop:"value",
	fs:function(){}
};

var date = new Date();

构造函数

构造函数和普通函数并没有区别,使用new关键字就是构造函数,使用构造函数可以实例化一个对象

函数的返回值有两种可能:

  1. 显示调用 return 返回return后表达式的求值
  2. 没有调用 return返回undefined
function Person(name,age){
	this.name = name;
	this.age = age;
}
var people = new Person('Jam' ,32)
构造函数返回值:
  1. 没有返回值
  2. 简单数据类型
  3. 对象类型

前两个情况构造函数返回构造对象的实例,实例化对象正是利用的这个特性

第三个构造你函数和普通函数表现一只,返回return后表达式的结果

prototype

  1. 每个函数都有一个prototype的对象属性,对象内有一个constructor属性,默认指向函数本身
  2. 每个对象都有一个_proto_的属性,属性指向其父类型的prototype
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值