js设计之初,并不强制使用var申明变量,这个设计后来带来了严重的错误,如果一个变量没有通过var声明便使用,那么该变量就自动被声明为全局变量。
在同一个页面的不同js文件中,如果都不用var声明,恰好都使用了变量i,将造成变量i 相互调用。
使用var声明的变量则不是全局变量,他的范围被限制在函数体内,同名变量在函数体内不相互影响。
,ECMA在后续规范中推出了strict模式,在strict模式下运行的JavaScript代码,强制通过var
申明变量,未使用var
申明变量就使用的,将导致运行错误。
在js代码第一行写上 'use strict';
支持strict模式的浏览器将开启strict模式运行JavaScript。
在函数体外部声明的,全局变量可以在js文件之间相互调用。
字符串:
若字符串中需要输出“” 可以在外部加上‘’ 例如' i am "a" ‘; 这种
ES6新增了一种多行字符串的表示方法。可以用` `包裹起来。
var str = `曹
开枪
你好`;
console.log(str);
模板字符串
var name = '小明'; var age = 20
进行字符串拼接用 + .
如果有很多变量需要连接,用+
号就比较麻烦。ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量:
var name = '小明';
var age = '20';
var mess = `您好,${name},年龄${age}`;
要注意拼接时候的前面需要加上·、、、·;这种。
字符串的操作
使用列表一样类似的索引。
var s = 'Hello, world!';
console.log(s[0]);
需要特别注意的是,字符串是不可变得,如果对字符串某个索引赋值是无效的。
age[0] = '8';
console.log(age);
indexof 会搜索指定字符串出现的位置 没有找到返回-1
var s = 'hello world';
console.log(s.indexOf('hello'));
substring 返回指定区间的自传 从索引0开始,但不包含5 不包含末尾
var res = s.substring(0,5);
console.log(res);