变量
// 全局变量
var sum; //变量声明
sum = 10; //变量赋值
document.title='1111'
function fn(){
//局部变量
var sum=0;
}
console.log(sum) /*undefined*/
变量和函数声明的提升
//变量声明提升
/*声明变量
变量赋值*/
function test() {
var a = "1";
var f = function() {};
var b = "2";
var c = "3";
}
//上述代码等价于
function test() {
var a, f, b, c;
a = "1";
f = function() {};
b = "2";
c = "3";
}
函数执行环境和作用域
代码执行:先生成一个执行环境,再执行
全局作用域(全局变量):
1,最外层函数和在最外层函数外面定义的变量拥有全局作用域,如下的例子:sum=10, test, a=1
函数本身也是一个特殊的变量,其名字就是函数名字
2,未定义直接赋值的变量自动声明为拥有全局作用域 -- 比如 all1 all2
3,所有window对象的属性拥有全局作用域,例如:window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等
我们也可以通过如下方式定义一个全局变量:window.name=11
执行环境类似一个表格:第一行放置全局变量,第二行放置局部变量
变量搜索机制:先搜索局部变量,如果没找到,搜索全部变量
第一行:sum, test, a
第二行:a, foo
/*看看函数的执行*/
/*a:由于变量声明提升,这里a变量是存在的,但是是undefined*/
var sum =0;
var a = 10
all1 = 1000;
function test() {
//这个时候由于变量声明提升,a变量已经声明,并且值是undefined
console.log(a);
all2 = 200;
//foo是一个函数,解析的时候会提升,所以能够访问到
console.log(foo());
/*如果省略下面这句 输出结果是什么*/
//var a =1;
function foo() {
return 2;
}
}
test();
变量声明提升笔试题
var v = "hello";
function test (){
console.log(v);
var v = "world";
}
// 这段代码运行的结果是什么呢?
// 答案是:undefined
// 这段代码说明了两个问题,
// 第一,function作用域里的变量v遮盖了上层作用域变量v。
// 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于:
//
// var v = "hello";
// function test (){
// var v; //声明一个变量 声明提升,但是不会被赋值
// console.log(v);
// v = "world";
// }
运算符
算术运算符 +(加) ——(减) *(乘) /(除) %(取余数)
复合赋值运算符 -= += *= /= %=
自增自减运算符 -- ++
比较运算符 > < >= <= ==(比较的时候做类型转换) ===(全等于:值 数据类型都一样才算相等) !=
逻辑运算符 && 与 |或 !非
三元运算符
短路运算符
== ===
//自动类型转换
if(1=='1'){
alert('==一样') //一样
}
//比较的时候不会类型转换
// if(1==='1'){
// alert('===一样') //不相等,不会执行
// }
表达式
逗号表达式
var x= 0,y= 0,z=0;
var result = (x=8*2,x*4) /*整个表达式的值为64,x的值为16*/
console.log(result)
console.log(x)
x=(z=5,5*2) /*整个表达式为赋值表达式,它的值为10,z的值为5*/
console.log(x)
console.log(z)
x=z=5,5*2 /*整个表达式为逗号表达式,它的值为10,x和z的值都为5*/
console.log(x)
console.log(z)
短路表达式
数据和数据类型
五大数据类型
//数值型
var num1 = 1;
//字符串型
var num2 ='2333fgfgfggggggggggggggggggggg';
//布尔型
var num3 =false;
//对象型
var num4 = document.getElementById('mydiv');
//未定义
var num5;
数据类型检测的重要性
//创业型公司 两个员工 : 小王:4000元 小李 : 5000元 一个月
//字符串
var xiaowang='7000';
//字符串
var xiaoli='10000';
100007000
//9000
//数据类型转换
alert(parseInt(xiaowang)+parseInt(xiaoli));
//数据类型转换..
//parseInt
//检测数据类型
alert(typeof(xiaowang))
dom对象
函数工具
属性工具
document.title = '基础信息' //设置文档标题等价于HTML的<title>标签
document.bgColor = 'red' //设置页面背景色
document.fgColor = 'green' //设置前景色(文本颜色)
document.linkColor = 'blue' //未点击过的链接颜色
document.alinkColor = 'red' //激活链接(焦点在此链接上)的颜色
document.vlinkColor = 'orange' //已点击过的链接颜色
内置对象复习
字符串容器中常用函数
获取字符串长度Length属性
连接字符串:concat
获取索引值:indexOf()
根据索引值获取单个字符:charAt()
获取部分字符串:substr(fromIndex,length)
获取部分字符串:substring(startIndex,endIndex)
获取部分字符串:slice(startIndex,endIndex)
按给定字符串分割,返回分割后的多个字符串组成的字符串数组:split()分割
使用您选择的分隔符将一个数组合并为一个字符串:John()合并
字符串大小写转换:toLowerCase()--javascript;toUpperCase()--JAVASCRIPT
数组容器
日期容器中的函数
Math