一 JS简要了解
1 一个网站的组成:HTML+CSS+JavaScript
HTML : 定义网页的内容; 可以看作人的肉体;相当于名词 --Hyper Text Markup Language(超文本标记语言)
CSS : 规定网页的布局;可以看作人的衣服,化妆品等,用于修饰装饰人;相当于形容词
JavaScript : 对网页行为进行编程;可以看作人的技能,比如吃饭、走路、化妆; 相当于动词
2 JavaScript语言
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型脚本语言或即时编译型的高级编程语言。
JavaScript的标准是ECMAScript 。截至 2012 年,所有浏览器都完整的支持ECMAScript 5.1,旧版本的浏览器至少
支持ECMAScript 3 标准。2015年6月17日,ECMA国际组织发布了ECMAScript 的第六版,该版本正式名称为
ECMAScript 2015,但通常被称为ECMAScript 6 或者ES6。
3 JS由三部分组成
ECMAScript:提供核心语言功能,规定了这门语言的书写规范;
DOM :提供访问和操作网页内容的方法和接口; --document object model 文档对象模型
BOM:提供与浏览器交互的方法和接口; --browser object model 浏览器对象模型
二 JS基础语法学习
1 变量
JS中使用 var 关键字来声明变量, = 用等号来给变量赋值 ;
var num; //声明一个变量num num = 10; //给num变量赋值数值10 var x = 20; //也可以在定义的时候直接赋值 console.log(typeof(num)); //typeof()查看变量的类型 console.log(typeof(x)); //console.log() 将结果在控制台输出 结果:num和x均为number类型
变量命名规则
组成:数字、字母、下划线、$
禁忌:不能以数字开头、不能为关键字
建议:命名尽量有意义、采用驼峰式、严格区分大小写
2 js数据类型 (2大类)
基本数据类型:number 、string、boolean、null、undefined、symbol--ES6后加的
引用数据类型:object (array function)
number类型:包含正数、负数、零、小数、NaN
NaN:not a number 不是一个数,但是它属于number类型;NaN和NaN不相等
console.log(NaN == NaN); //false console.log(typeof NaN); //number
string类型:字符串类型,在js中用" "或' '包起来的都是字符串;字符串由字符组成,字符的个数就是该字符串的长度;
每一个字符的位置都可以通过索引表示
var str='abcde'; console.log(str.length); //5 console.log(str[0]+' '+str[3]); //str[0]--a str[3]--d
boolean类型:布尔类型,只有两个值 true / false
null类型:js中null是nothing,被看作不存在,数据类型是引用类型object
console.log(typeof null); //object console.log(typeof undefined); //undefined console.log(null == undefined); //true console.log(null === undefined); //false
undefined类型:没有值的变量,即仅有变量声明;其值是undefined,类型也是undefined
var n; console.log(n); //值为 undefined console.log(typeof n); //类型为 undefined console.log(typeof null); //object console.log(typeof undefined); //undefined console.log(null == undefined); //true console.log(null === undefined); //false
object类型:对象数据类型,由多组属性名、属性值组成的(key:value);一个对象的属性名是不可重复的
对象中有几组常见形式--{ }是对象 [ ] 是数组 /^$/ 是正则
num = 0; console.log( !!num); var arr = [1,2,3,4,5]; //数组 实际也是object类型 var obj = { //对象 object类型 name: '小七', age:10 } console.log(arr); console.log(obj);
3 typeof 操作符
/*------------- typeof 操作符 ---------------*/ console.log(typeof res); //undefined,这个变量没有定义,但不会报错;res是一个变量 console.log(typeof 123); //number,是一个数字; console.log(typeof ('123')); //string,是一个字符串; typeof是一个操作符,不是方法,所以可以不加() console.log(typeof null); //object,是一个对象; 在js中null是一个空指针 console.log(typeof true); //boolean,是一个布尔值 console.log(typeof {}); //object,是一个对象 console.log(typeof function(){}); //function,是一个方法,也是属于object类型的; /*-------------- typeof的返回值是一个字符串类型 -------------*/ console.log(typeof typeof 123); //”string“
4 变量和数据之间的关系
/*------------- 变量的类型由所赋的值确定 ------------*/ var num; console.log(typeof(num)); //仅声明的变量类型为 undefined num = 10; console.log(typeof(num)); //number num = 3.14; console.log(typeof(num)); //number num = -5; console.log(typeof(num)); //number var str = 'abc'; console.log(typeof(str)); //string var str1 = "123"; console.log(typeof(str1)); //string var num1 = null; console.log(typeof(num1)); //object
5 数据类型转换
1) 转为字符串string类型
a. toString()方法 注:toString() 不能转换 null和 undefined
/*-------------- 转为string类型 toString()方法 ---------------*/ var num = 18; console.log(num.toString()); //18 console.log( typeof num.toString()); //string类型 var bool = true; console.log(bool.toString()); //true console.log( typeof bool.toString()); //string类型 // var x = null; //toString()不能转null和undefined // console.log(x.toString()); //会报错 //var y; //console.log(y.toString()) //报错
b. String()方法 都能转换
console.log('---------- 转为字符串String()方法------------'); var y; console.log(String(y)); //undefined console.log(typeof String(y)); //string console.log(String(null)); //null console.log(typeof String(null)); //string console.log(typeof 12); //number console.log(String(12)); //12 console.log(typeof String(12)); //string
c. 隐式转换 num+" "
当加号两边的字符,一个是字符串类型,一个是其他类型时,会先把其他类型转换成字符串,再进行字符串拼接,返回字符串
console.log('----------------- 隐式转换 -----------------'); var a = true; console.log(typeof a); //boolean var str = a + ""; //隐式转换 console.log(str); //true console.log(typeof str); //string
2) 转为数字number类型
a. Number() 方法 将字符串转换为数值类型;
如果要转换的字符串中含有一个不是数值的字符,则返回NaN
console.log('--------------- 转换为数值类型 Number()方法 -------------------------'); console.log(Number('123')); //123 console.log(typeof Number('123')); //number console.log(Number('1a23')); //NaN console.log(typeof Number('1a23')); //number console.log(Number(true)); // 1 console.log(typeof Number(true)); //number
b. parseInt()方法 解析一个字符串,返回一个整数
第一个字符是符号或数字时,转换进行到遇见第一个非数值字符结束
第一个字符不是符号或数字,则返回NaN
console.log('--------------转换为数值类型 parseInt()方法----------'); console.log(parseInt('123')); //123 console.log(typeof parseInt('123')); //number console.log(parseInt('1a23')); // 1 第一个字符是数字,在遇到第一个非数值字符处停止 console.log(typeof parseInt('1a23')); //number console.log(parseInt('-12a3')); // -12 console.log(typeof parseInt('1a23')); //number console.log(parseInt('b123')); // NaN 第一个字符为非数字或符号,则返回NaN console.log(typeof parseInt('b123')); //numbe
c. parseFloat()方法 将字符串转换成浮点数, parseFloat()和parseInt()非常相似;
不同:parseFloat()会解析遇到的第一个.(即小数点),遇到第二个.或者非数字字符则结束;
如果解析的内容是整数,则返回整数
console.log('--------------转换为数值类型 parseFloat()方法----------'); console.log(parseFloat('1.23d4')); //1.23 console.log(typeof parseFloat('1.23d4')); //number console.log(parseFloat('123')); //123 console.log(typeof parseFloat('123')); //number
d. 隐式转换
console.log('--------------转换为数值类型 隐式转换方法----------'); var str = '123'; var num = str - 0; console.log(num); //123 console.log(typeof num); //number var str1 = '3.14'; var num1 = str1 - 0; console.log(num1); //3.14 console.log(typeof num1); //number
3) 转为boolean类型
0 、 ' '空字符串、null 、undefined 、NaN 均会被转换成false,其他均会被转换成true
! 为取反,先将其他类型转换为布尔类型,然后取反
!! 是将其他的数据类型转换为布尔类型,相当于Boolean()
console.log('------------转换为boolean布尔类型-------------');
console.log(Boolean(0)); //false console.log(Boolean('')); //false console.log(Boolean(null)); //false console.log(Boolean(undefined)); //false console.log(Boolean(NaN)); //false var boolean = true; var num = 20; var str = 'abc'; console.log( !boolean); //false console.log( !!boolean); //true console.log( !!num); //true console.log( !!str); //true