JS学习笔记_Day Rabbit

1. JavaScript 作用域

在JS中, 对象和函数同样也是变量。

JavaScript 局部作用域/全局作用域
  • 局部变量:在函数中通过var声明的变量。
    函数参数只在函数内起作用,是局部变量。
  • 全局变量:在函数外通过var声明的变量。
    在 HTML 中, 全局变量是 window 对象: 所有数据变量都属于 window 对象。
  • 没有声明就使用的变量,默认为全局变量,不论这个变量在哪被使用。
function func(){
  undefined_var=110
}

在 func() 被第一次调用之前, undefined_var 变量是不存在的即 undefined。func() 被调用过之后,undefined_var 成为全局变量。

JavaScript 变量生命周期

JavaScript 变量生命周期在它声明时初始化。
let 和 var 的区别代码实例:

function varTest() {
  	var x = 1;
 	if (true) {
    		var x = 2;  // 同样的变量!
    		console.log(x);  // 2
 	}
  	console.log(x);  // 2
}

function letTest() {
  	let x = 1;
  	if (true) {
    		let x = 2;  // 不同的变量
    		console.log(x);  // 2
  	}
  	console.log(x);  // 1
}

2. JavaScript 事件JavaScript 字符串

HTML 事件

HTML 元素中可以添加事件属性,使用 JavaScript 代码来添加 HTML 元素。

<some-HTML-element some-event="JavaScript 代码">

在以下实例中,按钮元素中添加了 onclick 属性 (并加上代码):

<button onclick="getElementById("demo").innerHTML=Date()">Time is</button>

在以下实例中,代码将修改自身元素的内容 (使用 this.innerHTML):

<button onclick="this.innerHTML=Date()">Time is</button>

不推荐使用"HTML 元素中可以添加事件属性"的方式来添加属性。
因为遵从“高内聚,低耦合”的编程原则。高内聚是说模块内部要高度聚合,低耦合是说模块与模块之间的藕合度要尽量低。前者是说模块内部的关系,后者是说模块与模块间的关系。

常见的HTML事件

onclick:用户点击 HTML 元素
onmouseover:用户在一个HTML元素上移动鼠标
onmouseout:用户从一个HTML元素上移开鼠标
onkeydown:用户按下键盘按键
参考:HTML DOM 事件

3. JavaScript 字符串JavaScript 运算符

var x = "JohnJohn";              // x 是字符串
y = x.charAt(2); // h
y = x.charCodeAt(2); // 104
y = x.concat(y, y); // JohnJohn104104, x+y+y
y = x.indexOf('h'); // 2, 索引从0开始
y = x.lastIndexOf('h'); // 6
y = x.slice();
y = x.split('o'); //J,hnJ,hn
y = x.substr(2); // hnJohn
y = x.substring(2,4) // hn,[2,3]
y = x.toLocaleLowerCase(); // johnjohn,小写
y = x.toLocaleUpperCase(); // JOHNJOHN,大写
y = x.toString(); // 转成Stirng
y = x.toUpperCase(); // JOHNJOHN,大写
y = x.trim(); // JohnJohn,去除两端的空格
y = x.valueOf(); // 返回某个字符串对象的原始值

更多

4. JavaScript 运算符

JavaScript 算术运算符

++自增;–自减

JavaScript 赋值运算符

x+=y --> x=x+y
x-=y --> x=x-y
x*=y --> x=x*y
x/=y --> x=x/y

空文本 + 数字得到的运算结果都是把数字转成字符串。

var result1 = 5+5+"abc"; //结果将是"10abc"
var result2= ""+5+5+"abc"; //结果将是"55abc"

常见的不同类型运算的转换方式
(1).字符串和数字相加,数字转成字符串。

var one="This is a test";
var two=123;
var three=one+two;
// 结果:three:This is a test123

(2). 字符串与 null(空值) 相加,null 转化为字符串。

var car=null+"a";    // 结果为 nulla

(3).字符串与布尔值相加,布尔值转化成字符串。
(4).数字和布尔值相加,布尔值 false 转成 0,true 转成 1。

var one=13;
var two=true;
var three=one+two;
// 结果 three:14

(5).数字与 null(空值) 相加,null 转化为数字 0。

var car=null+3+4;    // 结果为7

5. JavaScript 比较 和 逻辑运算符

比较运算符

在逻辑语句中使用,以测定变量或值是否相等。用于条件语句。
等于==
绝对等于===(数据类型和值)
不等于!=
不绝对等于!===

逻辑运算符

&& and;
|| or;
!not

条件运算符
variablename=(condition)?value1:value2 

更多

6. JavaScript 条件语句

if 语句
if (condition)
{
    当条件为 true 时执行的代码
}
if…else 语句
if (condition)
{
    当条件为 true 时执行的代码
}
else
{
    当条件不为 true 时执行的代码
}
if…else if…else 语句
if (condition1)
{
    当条件 1 为 true 时执行的代码
}
else if (condition2)
{
    当条件 2 为 true 时执行的代码
}
else
{
  当条件 1 和 条件 2 都不为 true 时执行的代码
}

7. JavaScript switch 语句

var d=new Date().getDay(); 
switch (d) 
{ 
  case 0:x="今天是星期日"; 
  break; 
  case 1:x="今天是星期一"; 
  break; 
  case 2:x="今天是星期二"; 
  break; 
  case 3:x="今天是星期三"; 
  break; 
  case 4:x="今天是星期四"; 
  break; 
  case 5:x="今天是星期五"; 
  break; 
  case 6:x="今天是星期六"; 
  break; 
}
default 关键词
var d=new Date().getDay();
switch (d)
{
    case 6:x="今天是星期六";
    break;
    case 0:x="今天是星期日";
    break;
    default:
    x="期待周末";
}
document.getElementById("demo").innerHTML=x;

switch 中 case的判断是===的判断,即数据类型和值的双重判断。

8. JavaScript for 循环

不同类型的循环

for - 循环代码块一定的次数
for/in - 循环遍历对象的属性
while - 当指定的条件为 true 时循环指定的代码块
do/while - 同样当指定的条件为 true 时循环指定的代码块

For 循环
for (语句 1; 语句 2; 语句 3)
{
    被执行的代码块
}

语句 1 (代码块)开始前执行
语句 2 定义运行循环(代码块)的条件
语句 3 在循环(代码块)已被执行之后执行

  • 语句1:在循环开始前已经设置了值时可以省略语句1
var i=2,len=cars.length;
for (; i<len; i++)
{ 
    document.write(cars[i] + "<br>");
}
  • 语句2:如果语句 2 返回 true,则循环再次开始,如果返回 false,则循环将结束。
    如果您省略了语句 2,那么必须在循环内提供 break。
  • 语句3:通常语句 3 会增加初始变量的值。
    当循环内部有相应的代码时语句 3 也可以省略。
For/In 循环
While 循环

更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值