1:
![](https://img-blog.csdn.net/20140419145634937?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzMyMTMyOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
x = 10 local i = 1 while i<=x do local x = i*2 print(x) i = i + 1 end 提示错误:stdin:1: attempt to compare nil with number 这是怎么回事呀?
它的意思是你用数字跟nil值做了比较,自然得出了错误。 另外,你贴的代码我运行了,是没有问题的。
2. 局部变量与代码块
* 局部变量添加local来声明,局部变量只在声明局部变量的代码块内有效
* 在交互模式下局部变量的作用域可能和想的会有所不同,因为一行执行是个完整的chunk
> local i = 1
> print(i)
nil
>
* 利用do ... end可以更好的定义语句块,为一个chunk划分界限。do ... end相当于C中的{...}
> do
>> local i = 1
>> print(i)
>> end
1
>